合并 - 启用git rerere有什么缺点吗?

我已经阅读了关于git的rerere功能的各种内容,我正在考虑启用它。 但我没有看到有人提到使用它时可能出现的任何问题。 我必须假设有一个缺点,或者它可能默认启用。 那么启用rerere有什么缺点吗? 哪些潜在的问题会导致不会发生?

Ryan Thompson asked 2019-09-10T08:29:26Z
4个解决方案
58 votes

如果你做错合并,然后丢弃它,然后再次进行“相同”合并,它将再次不正确。 但是,您可以忘记记录的分辨率。 从文档:

forget

这将重置forget中为当前冲突记录的冲突解决方案。

小心在特定路径上使用它; 你不想在任何地方吹走所有录制的分辨率。 (forget没有参数已被弃用以防止您这样做,除非您键入git rerere forget .以明确请求它。)

但是如果你不这样做,你很容易就会把这个错误的合并放到你的历史中。

MatrixFrog answered 2019-09-10T08:30:07Z
35 votes

正如J. C. Hamano在他的文章“Fun with rerere”中提到的那样

  • Rerere记得你是如何选择解决冲突地区的;
  • Rerere还记得你是如何在冲突地区之外进行调整以适应语义变化的;
  • 即使您合并了两个分支,其内容与您之前解析的分支不同,Rerere也可以重复使用以前的分辨率。

即使长期使用rerere的人也常常没有注意到最后一点。

因此,如果您在过于宽泛的内容上激活rerere,由于最后一点,您最终可能会出现令人惊讶或令人困惑的合并解决方案。

VonC answered 2019-09-10T08:31:07Z
3 votes

我选择了一个只包含二进制文件的提交(在gitk中)。 Cherrypick由于冲突而失败了(事情就这么自然而然),我解决了保留樱桃挑选的冲突。 我后来惊讶地发现,在另一个重新分支的分支中我的dll没有表现 - 只是发现它们没有被带入rebase,因为(我推测)自动解决冲突。 因此,这是我遇到的唯一一种情况(启用了rerere),遇到违反直觉(虽然我确信完全一致)的行为。

Mr_and_Mrs_D answered 2019-09-10T08:31:33Z
2 votes

我已经全球启用了rerere。 我真的没有注意到任何问题,它通常似乎让我的生活更轻松。

Marnen Laibow-Koser answered 2019-09-10T08:31:57Z
translate from https://stackoverflow.com:/questions/5519244/are-there-any-downsides-to-enabling-git-rerere