gpt4 book ai didi

git - 为什么我的 git 历史看起来像一棵圣诞树?

转载 作者:IT王子 更新时间:2023-10-29 00:34:46 26 4
gpt4 key购买 nike

在圣诞节前不久在我们的一个存储库中执行 git log --decorate --oneline --graph 时,我们发现出现了以下结构(旋转以强调脆弱的节日主题):

redacted git log output, rotated to look like a Christmas tree

提交图中的这种模式是如何产生的?

当然,这是故意有些愚蠢,但这里有一个有趣的点 — 当您在 git 历史浏览器中看到它们时,通常很难看出如何解释提交图中的特定模式。

最佳答案

在这种情况下,在存储库的一个克隆中 master 分支的顶端有一个未推送的提交。然后 git pull 在同一个存储库中多次运行,在一段时间内,上游有很多新工作正在完成。 (在这种情况下,它是由于自动脚本而发生的,但如果开发人员只是反复 pull 入分支以使其保持最新,而不是 rebase ,那么同样的事情也会发生。)

当上游有新提交时,每次 pull 都会创建一个新的 merge 提交,因为 master 中总是有一个不在上游 master 中的提交。

最终,这个存储库中 master 分支的历史被推送到上游,所以其他开发人员在他们下次从上游存储库 pull 时看到提交图中的这个结构突然出现。

如果您有一些具有类似结构的历史记录,并且想找出是哪个提交/开发人员导致了这个问题,您可以只查看带星号的行(基本上跟随每个 merge 的第一个父级)直到你得到第一个非 merge 提交。在图片中的例子中,它是 b275805 — 应该更早推送的提交。

这就是人们通常更喜欢使用 git pull --rebase 的原因之一——它使您未发布的历史变得简单。

我的同事 Matthew Somerville发现了这一点并弄清楚发生了什么。

关于git - 为什么我的 git 历史看起来像一棵圣诞树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com