首页 » 信息技术 »

git merge前,先git rebase master

2020年7月22日 / 26次阅读
Git

通过git多人协作开发代码时,git push常常有冲突,因为其它人也在向master分支push。你的开发分支已经落后了。

此时,我们可以在master分支git pull,然后git merge dev。

这样操作会带来一个问题,直接git merge后,master分支的log会分叉(因为你拉出dev的点已经落后了),并且会因为这个merge,凭空多出来一个merge commit,不好看了。而且,这样直接merge,所有的commit是按照时间先后顺序,分布在master分支的log上,这也是个问题。

其实,这样直接git merge,还有个问题,你的dev分支的log可能很凌乱,不适合就这样呈现在master分支上,需要git rebase合并处理一下(git rebase -i HEAD~n或者用commit id:git rebase -i 0bb85c 582db9)。

因此,git rebase master登场(在dev上使用这条命令哦)。

这条命令的作用,是将你的dev上所有的commit,重新在新的master的HEAD上commit一遍,有冲突要手动解决。

然后再回到master分支,做git merge,log将完美呈现出线性发展的特征,而且没有乱七八糟的commit(假设你做了git rebase合并commit)

整个流程是这样的,假设你现在的分支是dev:

git checkout master
git pull
git checkout dev
git rebase master
git checkout master
git merge dev
git push

补充一点,如果你是直接在master上修改代码,并且有本地commit,流程可以这样:

git pull --rebase --> (等同于先git pull,再git rebase,如果不做rebase,log分叉,严重影响美观)
git push

不过,我们一般不会在master分支上直接commit代码。

rebase这个词,有人说理解为依赖关系:

feature-2不依赖于feature-1中的任何变化,就可以rebase让它基于master。

git checkout feature-2

git rebase master

git rebase对所有涉及的commit("pick")执行默认操作,它只是将历史记录回滚到最后一个公共父节点,并重新生成两个分支的commit。git就会变成历史现在看起来像这样:

rebase应该如何理解:re,重新;base,基础;rebase,重新确定分支基础!

本文链接:https://www.maixj.net/ict/git-rebase-master-23842

相关文章

留言区

《git merge前,先git rebase master》有2条留言

  • 麦新杰

    git rebase master有冲突时,用git diff查看冲突,手动修改冲突,然后git add,然后git rebase --continue。有git,多分支并行开发,岁月静好... []

  • 麦新杰

    git rebase这个命令很强大... []


前一篇:
后一篇:
-->只要几分钟回答问卷,就能轻松赚现金!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top