启用git rerere有什么缺点吗?

Rya*_*son 97 git merge git-rerere

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

Mat*_*rog 61

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

git rerere forget <pathspec>

这重新解决了rerere为当前冲突记录的冲突解决方案<pathspec>.

小心在特定路径上使用它; 你不想在任何地方吹走所有录制的分辨率.(forget推荐使用任何参数来保存您的操作,除非您键入git rerere forget .以明确请求它.)

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

  • 这就是为什么`rerere`仍然留下标记为未合并的冲突的文件,因此您必须在提交之前手动添加它们(希望在检查/测试它们之后).您可以随时使用`git checkout -m <path>`查看原始冲突版本,并在必要时重做解决方案. (12认同)
  • 我认为这可能是主要问题.启用rerere会为错误添加一种方法,以便意外潜入.您中止(或者通过从历史记录中删除它而撤消)的合并可能会在以后再次困扰您.基本上,它引入了与实际历史图正交的第二种历史机制. (5认同)
  • 我仍然认为命令应该是`git forere`. (4认同)
  • 那是有道理的!听起来您需要一个新别名。 (2认同)
  • @RyanThompson中止合并不会影响rerere.(我经常希望他们这样做 - 我有时会中止合并,因为我设置错误,然后在我设置正确的时候需要做完全相同的分辨率.)至于从历史中删除合并,为什么你会去做? (2认同)

Von*_*onC 37

正如JC Hamano在他的文章" Fun with rerere "中提到的那样

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

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

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

  • 冲突的帅哥仍然必须匹配; 这是非常难以给出误报. (14认同)
  • @gavenkoa True (https://git-scm.com/docs/git-rerere#Documentation/git-rerere.txt-emgcem):默认情况下,超过 15 天的未解决冲突和超过 60 天的已解决冲突将被修剪。 (2认同)

Mar*_*ser 5

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

  • 同样在这里。使用2年以上没有任何问题。 (5认同)
  • @manishma 我不是 Andrey,但我仍然喜欢 rerere。 (2认同)