merge 操作会生成新的合并节点,并保留原本的分支记录
1 | git checkout feature |
git rebase
rebase 操作会将功能分支合并到主分支中,并且不产生新的合并节点
1 | git checkout feature |
git rebase 和 git merge 的区别
rebase 会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
而 merge 会把公共分支和你当前的 commit 合并在一起,形成一个新的 commit 提交
git rebase 和 git merge 的优缺点
git merge 优点是分支代码合并后不破坏原分支代码的提交记录,缺点是会产生额外的提交记录并进行两条分支的合并
git rebase 优点是可以将对象分支的提交记录续道目标分支上,形成线性提交历史记录,review 时更加直观
使用 git rebase 的黄金法则 🌿
就是不要再公共分支执行 git rebase
Rebase 将 main 中的所有提交移到了 feature 的顶端。问题是,这只发生在你的版本库里。所有其他的开发者仍在使用原来的 main。由于重定会产生全新的提交,Git 会认为你的主干分支的历史已经与其他人的不同了。
同步两个主分支的唯一方法是将它们 merge 到一起,这样就会产生一个额外的合并提交和两组包含相同修改的提交(原始提交和来自你的重构分支的提交)。不用说,这是一个非常混乱的局面。
所以,在你运行 git rebase 之前,一定要问自己,”还有人在看这个分支吗?”如果答案是肯定的,就把你的手从键盘上拿开,开始考虑其他方式来合并修改。