rebase
:顾名思义 ==变基== git
假设如今从master
分支上,切出一个本地开发分支mydev
服务器
git checkout -b mydev
这时候master
上的git
记录是这样子的code
A-->B-->C-->D
这个时候另一个开发人员把ta的dev分支合并到master分支了tadev
blog
A-->B-->C-->D |-->E-->F-->G
git lg or git log
实际上如今master
上的分支的git 提交记录已是这样子的了:开发
A-->B-->C-->D-->E-->F-->G
可是你本地上的分支仍是这样的,你分别了提交了 3个 commit
记录。get
|—->M-->N-->O A-->B-->C-->D
这时,你的代码开发完成了,须要合并代码。这时候有两种选择:it
直接ast
git merge
或者coding
通过 git rebase 再提交 git merge
若是直接git merge
,假设你提交commit
的时间和刚才合并进去的其余人的dev分支是有重合的:di
A-->B-->C-->D |-->E |-->F-->G |-->M-->N |-->O
这样的提交的记录就比较乱,假设如今须要回退代码什么的,就有点小麻烦了,就须要一个文件去回退。对于多人协做的话 就比较须要git rebase
先对mydev
分支进行 git rebase
操做
这时候分支的提交记录就会变为以下所示:
A-->B-->C-->D-->E-->F-->G |-->M-->N-->O
会把mydev
分支新增的commit
记录新增在master分支最新的后面,这个时候push
分支,就须要强制更新你的分支。再提交merge
。
git push -f
变基的做用就是修整历史,将分支历史并入主线。
git rebase
前须要确保master
分支为最新。若是git rebase
以后提示冲突的话,须要解决冲突:
git add
commit
, 继续 rebase
git rebase --continue
git rebase
还有一些其余的操做,
git rebase
git rebase --abort
git rebase -i HEAD~4 合并最近4次提交
http://blog.codingplayboy.com...