git rebase

1,436 阅读1分钟

在dev提交之前 master有另一个分支的新的commit 执行git merge dev会发生什么?

git merge 操作

首先dev分支和master分支找出最近的commit点c2,然后把dev最近的一次commit c3 和 masrer 最近的commit c4合成新的commit c5 有冲突的话要解决冲突,然后将所有的commit按照时间顺序提交到master上,master会有新的commit, 这样整个分支树不是线性的。

git rebase 操作

先执行git rebase 再执行git merge 

首先切换到master分支拉最新的代码

切换到dev分支 执行 git rebase master 如果有冲突解决冲突 然后 git add . -> git rebase -continue 

最后切换到master分支 执行 git merge dev 

执行 git rebase 发生了什么?

git rebase是将当前dev分支的所有基于master分支提交点之后的commit打散成一个个patch,并重新生成一个新的commit hash值,再基于master分支目前最新的commit点上进行提交,并不根据两个分支上实际的每次提交的时间点排序,rebase完成后,切到master分支进行合并dev分支时也不会生成一个新的commit点,可以保持整个分支树的完美线性。