如何' git merge'弄乱你的提交历史?

时间:2017-08-02 15:36:09

标签: git version-control git-merge git-rebase

考虑一个由几个开发人员同时处理代码库的团队。将要素恢复到主分支时,可以git mergegit rebase

我从其他几位开发者那里听说,与git merge相比,使用git rebase会使您的git历史变得时髦。

我也见过SO question about the difference between merge and rebase

One SO answer提到了rebase的优点是如何避免钻石形状。但是这对git日志意味着什么呢?

Another SO answer讨论如何合并交错历史线程。但是,一个人的主要分支是否可以拥有它所包含的所有作品的所有历史?

我想我的一般问题是使用merge和rebase时git日志的生成方式有何不同?

额外信用:合并使得事情变得非常困难的一个例子,相反,改变可以减轻这种困难。

1 个答案:

答案 0 :(得分:1)

这是一个简单的示例,用于显示git log --oneline --graph --decorate --all中的差异。

合并后记录输出

*   e8dc85d Merge other branch into master
|\
| * 30a040f (other) edited a.txt on other branch
* | 0bc86a0 edited a.txt on master
|/
* b6c1082 added a.txt

在rebase和merge之后记录输出

*   1e42180 Merge another branch into master
|\
| * 924fe1e (another) edited b.txt on another branch
|/
* dab33be edited b.txt on master
* 0d64167 added b.txt

<强>结论

真的有很多话要说(例如在rebase示例中,可以避免合并提交,但在日志中丢失分支布局)。

我的主要区别在于,使用rebase,功能分支与master垂直分开,其他分支合并为master。

既然你不是在征求意见,我会留给你。