去除多余的Merge branch提交
博客专区 > zgw06629 的博客 > 博客详情
去除多余的Merge branch提交
zgw06629 发表于2年前
去除多余的Merge branch提交
  • 发表于 2年前
  • 阅读 52
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 十分钟定制你的第一个小程序>>>   

在项目开发中,经常会有这样的情况发生,开发完了一个新功能,提交到远程仓库时,发现提交失败(其他同事已对其做了更改),先得pull最新代码再能提交。但这时会有一个恼人的冗余提交(Merge branch ......),如本地添加了一个file1,同时其他同事添加了file2并先行一步提交到远程仓库。等我提交时得先更新代码。这时项目提交历史就会如下所示:

e76dfc4216d797af0f093a8121b9a586d4d33ce6 Merge branch 'master' of https://github.com/XXX/helloworld
20171e3a0ed95a6b6a920cda8d7837fff2b393db Create file2 from remote
accf96f77485502f918b56007eb39af687674755 add file1 from local

怎样取消掉恼人的Merge branch提交呢?使提交历史变为简单的:

accf96f77485502f918b56007eb39af687674755 add file1 from local
20171e3a0ed95a6b6a920cda8d7837fff2b393db Create file2 from remote

解决方法(假设使用的是master分支)只须执行如下命令

git rebase origin/master

然后执行提交(git push origin master)即可。

解释:

当更新完代码后(即执行完git pull origin master),origin/master(远程分支)的提交历史(git log origin/master)如下所示:

C0(共同祖先) --> C1(create file2)

master的提交历史(git log)为:

C0 -->  C2(add file1) --> C1(create file2) -->C3(Merge branch)

在master分支中执行git rebase origin/master,相当于将C0以后的master分支的更改(add file1)以补丁文件的形式在origin/master分支中重新应用一遍,从而改写master分支的提交历史,使其成为origin/master分支的直接下游,即这时master的提交历史变为:

C0 --> C1 (create file2) --> C2(add file1)

同时origin/master的提交历史仍保持不变。

补充:

关于git rebase更详细的介绍见git文档--分支的衍合


标签: Git
共有 人打赏支持
粉丝 14
博文 54
码字总数 30471
×
zgw06629
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: