启用git rerere有什么缺点吗?

时间:2011-04-01 21:50:05

标签: git merge git-rerere

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

4 个答案:

答案 0 :(得分:58)

如果你做错合并,然后丢弃它,然后再次进行“相同”合并,它将再次出错。但是,您可以忘记记录的分辨率。来自the documentation

  

git rerere forget <pathspec>

     

这会重新解决rerere为<pathspec>中当前冲突记录的冲突解决方案。

小心在特定路径上使用它;你不想在任何地方吹走所有录制的分辨率。 (forget没有参数deprecated可以帮助您避免这样做,除非您输入git rerere forget .来明确请求它。)

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

答案 1 :(得分:35)

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

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

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:2)

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