git rebase

1 使用git rebase的一般开发过程

假设Git目前只有一个分支master。开发人员的工作流程是

git clone master branch
在自己本地checkout -b local创建一个本地开发分支
在本地的开发分支上开发和测试
阶段性开发完成后(包含功能代码和单元测试),可以准备提交代码
首先切换到master分支,git pull拉取最新的分支状态
然后切回local分支
通过git rebase -i 将本地的多次提交合并为一个,以简化提交历史。本地有多个提交时,如果不进行这一步,在git rebase master时会多次解决冲突(最坏情况下,每一个提交都会相应解决一个冲突)
git rebase master 将master最新的分支同步到本地,这个过程可能需要手动解决冲突(如果进行了上一步的话,只用解决一次冲突)
然后切换到master分支,git merge将本地的local分支内容合并到master分支
git push将master分支的提交上传
本地开发分支可以灵活管理

2 git rebase是什么

git rebase处理的对象是本地分支,它将上游分支的修改合入到本地分支,比如将主干分支的修改合入到本地分支。本地分支本来是基于主干的某次提交,现在主干分支有新的提交,git rebase之后,本地分支将基于主干分支最新的提交。正如rebase的含义,本来是base主干分支的老的提交,现在rebase,基于主干分支最新的提交。

git rebase的时候应该切换到本地分支,然后git rebase master,解决冲突之后,git rebase --continue。

3 将本地分支合入到主干分支

切换到主干分支,git checkout master,然后git merge dev,如果出现冲突的话,解决冲突,然后git add/git commit就行。

分支合并是主干分支最新的提交、feature分支最新的提交和它们的最近祖先提交三者之间的合并,然后生成一个新的提交。如果创建分支之后主干不前进的话,合并分支的时候不会生成新的提交。

4 git rebase用在本地分支上吗?git rebase master分支到本地分支了之后呢?如果有修改的话,再如何合入master分支呢?

git rebase会把本地分支上的提交保存为patch,重新生成新的提交,保留master上的提交历史。所以,git rebase前最好用git rebase -i HEAD~3来合并本地的提交。再合入master分支的话,就到master分支,把本地的分支merge进去就行。然后再提交到远程库。 

5 注意事项

“我个人推荐大家开发的时候,尽量及时rebase上游分支(我习惯是每周merge一次),有冲突提前就fix掉,即使我们自己的分支开发了很久(哪怕是几个月),也不会积累太多的conflict,最后合并进主分支的时候特别轻松, 非常反对从master check出新分支,自己闷头开发几个月,结果最后merge进主分支的时候,一大堆冲突,自己还嗷嗷叫的行为。”
6 git merge做的事情
将两个分支的当前快照和他们的共同祖先三者进行了一个merge,然后生成一个新的提交。
7 git rebase相关的命令
通过下面的命令合并本地的4次提交。
git rebase -i HEAD~4
原文地址:https://www.cnblogs.com/hustdc/p/10877508.html