请考虑以下情况:
- 您有一个git存储库的克隆
- 您有一些本地提交(尚未推送到任何地方的提交)
- 远程存储库中有尚未提交的新提交
所以像这样:
如果git pull
使用默认设置执行,则会得到以下内容:
这是因为git执行了合并。
不过,还有另一种选择。您可以告诉pull做一个rebase:
git pull --rebase
然后您会得到:
在我看来,经过重新设计的版本具有许多优势,主要集中在保持代码和历史记录的整洁方面,因此我对git默认情况下进行合并感到震惊。是的,您本地提交的哈希值将被更改,但这似乎为您获得较简单的历史记录付出了很小的代价。
但是,我绝不建议这某种程度上是错误的或错误的默认值。我只是在想为什么可能首选默认合并的原因而已。我们是否对为什么选择它有任何见识?有没有使其更适合用作默认设置的好处?
这个问题的主要动机是,我的公司正在尝试建立一些关于如何组织和管理存储库的基线标准(希望更像是准则),以使开发人员更容易地访问以前从未使用过的存储库。我有兴趣提出一个案例,我们通常应该在这种情况下进行基准调整(并可能建议开发人员将其全局配置默认设置为进行基准调整),但是如果我反对这样做,我肯定会问为什么要进行基准调整?如果太好了,则使用默认值。所以我想知道我是否缺少某些东西。
有人提出这个问题是重复的,为什么这么多的网站更喜欢“ git rebase”而不是“ git merge”?; 但是,这个问题与这个问题有些相反。它讨论了在合并基础上进行重组的优点,而该问题询问了在合并基础上进行合并的好处。那里的答案反映了这一点,着重于合并问题和资产重组的好处。