06-30-2020, 06:46 PM
git-merge是在合并点重放一个节点从分叉点开始的总的修改,git-rebase是把分叉点开始的所有提交逐个应用到一个新的位置上。所以说git-rebase有修改历史的效果,而git-merge则保留了分叉的历史。
Gerrit Code Review一般使用cherry-pick方法,相当于对一个提交进行了rebase,这样的项目的git历史记录是看不到分叉的。用rebase的方法合并代码的效果就是让历史成为一条链。
而Git的作者的另一个项目Linux内核就是大量使用merge的典型例子。在项目贡献者多的情况下,难以做到完美的rebase,一般会采用merge. merge的另一个重要的价值就是可以清晰地展示历史上每个分支的情况。
讨论:
1. 用git-merge合并的分支怎么进行bisect操作?
2. 在公用分支上不应使用force push.
3. 从两个或多个分叉点merge出来的版本是否有可能进行rebase?
Gerrit Code Review一般使用cherry-pick方法,相当于对一个提交进行了rebase,这样的项目的git历史记录是看不到分叉的。用rebase的方法合并代码的效果就是让历史成为一条链。
而Git的作者的另一个项目Linux内核就是大量使用merge的典型例子。在项目贡献者多的情况下,难以做到完美的rebase,一般会采用merge. merge的另一个重要的价值就是可以清晰地展示历史上每个分支的情况。
讨论:
1. 用git-merge合并的分支怎么进行bisect操作?
2. 在公用分支上不应使用force push.
3. 从两个或多个分叉点merge出来的版本是否有可能进行rebase?