代码之家  ›  专栏  ›  技术社区  ›  Gabe Hollombe

什么时候“吉特拉--再平衡”会让我陷入麻烦?

  •  39
  • Gabe Hollombe  · 技术社区  · 15 年前

    我知道当我使用 git pull --rebase ,Git将重新编写历史记录并移动我的本地提交,以在我刚从分支中提取的所有提交之后发生。

    我不明白的是这会是一件多么糟糕的事情。人们都说要惹麻烦 git pull--重新平衡 在那里你可以得到别人无法拔出的树枝。但我不明白这是怎么可能的,因为你所做的只是在你的分支上重播你的本地承诺,而不是公开承诺。那么,有什么问题吗?

    4 回复  |  直到 15 年前
        1
  •  24
  •   Community CDub    8 年前

    如果您只发布(推送)了一些提交,这只是一个问题,因为它们很难合并到已经提交了这些提交的其他回购。因为他们的sha1已经改变了,Git会尝试重放它们。 再一次 在那些回购协议上。

    如果您没有(再次推送这些提交中的任何一个),那么任何重新平衡都应该是安全的。

    所以这里的问题是:你是 当然 你正在重新平衡的所有本地提交实际上仍然是…本地的?
    你确定吗? git pull --rebase '之后' git pull--重新平衡 “?

    如果你在一个“私有分支”(一个你从未推动过的分支,但只在一个公共分支上合并或重新平衡,你将推动的分支)上工作,那么你可以随时安全地重新平衡该私有分支。

    最后,这一切都取决于 workflow of merge 你已经选择了 to establish .

        2
  •  5
  •   John Stoneham    15 年前

    向分支机构承诺。推。合并到另一个分支(假设您维护两个基线,一个补丁分支和一个新的开发分支)。意识到已经将其他提交推送到了您正在跟踪的服务器分支。拉——重新平衡。突然间,您对新哈希进行了每个提交—并销毁了合并提交。

        3
  •  3
  •   Greg Hewgill    15 年前

    如果没有人从你身上撤走,而你没有(在重新平衡之前)把你的承诺推到任何其他地方,那么理论上你是可以的。然而,Git被设计成能够很好地处理合并,如果您拉合并而不是拉和重新平衡,您可能会发现总体上的工作更少。

        4
  •  2
  •   Gareth    15 年前

    记住Git是一个 分布式 源控制系统。人们不必从您正在推动的中央存储库中提取—在某些工作流中,他们可以直接从您那里提取更改。在这种情况下,重写你的历史肯定会导致你所说的问题