美文网首页
feature分支执行git rebase后推送不成功

feature分支执行git rebase后推送不成功

作者: Sweet丶 | 来源:发表于2022-02-17 16:08 被阅读0次

    我们的项目代码是使用Git来管理的,,在开发新需求时我们会从主分支中切出一个feature分支进行开发,在feature分支开发期间主分支可能会有新的一些提交,然后我们在feature分支开发完后要如果要基于主分支上的新的提交去打包提测,git rebase操作是最合适的选择,因为feature分支代码目前是不要合并到主分支上的,查看git代码分支操作整理

    一、feature分支rebase后的问题

    feature分支开发完功能后,我们已经推送到了远程,在打包提测前,我们需要同步一下主分支代码,于是在主分支拉取最新代码后,在feature分支执行了git rebase release_0224,或者Sourcetree上执行变基操作.

    rebase操作.png
    • 之后变成了下面这个样子.。可以看到有23个推送和5个拉取,需要先从远程拉取再推送到远端,但是我们显然是没有必要从远程拉取的,因为这个分支只有自己的提交,所以我们只想将更改推送到远程

      分支对0224分支做了rebase后的情况.png
    • 接下来推送到远程会报错:
      Updates were rejected because the tip of your current branch is behind。==> git本地仓库的当前版本低于远程仓库的版本, 需要先更新.

      没有拉取更新前去推送这个更新到远程的结果.png
    • 接下来先更新再推送到远程,可以做到推送到远端了,但是分支变成了这样:
      提交记录重复了一遍,如下面的红框和绿框。

      先拉取再推送的后果.png
    二、这个问题的处理方式

    我们想要实现的是执行了rebase后,远程分支能与本地的feature分支同步。最后在网上找到了解决方法:

    • feature分支只有一个人在开发:
      可以直接进行强制推送,执行命令行:
    git push --force origin featureAAA
    // --force可以直接理解为用你本地分支的状态覆盖掉远端分支状态.
    
    • feature分支多个人在开发:
      进行强制推送需要加参数,在强制覆盖前会进行一次检查: 如果其他人在该分支上有提交会有一个警告, 执行命令行:
    git push --force-with-lease origin featureAAA
    

    上述方式解决后,分支线是正常的,且不会像先拉取再推送操作那样会重复一遍:


    强制推送后分支线.png

    相关文章

      网友评论

          本文标题:feature分支执行git rebase后推送不成功

          本文链接:https://www.haomeiwen.com/subject/iphslrtx.html