GIT警告:太多文件跳过了不精确的重命名检测


78

我知道默认的重命名限制是100,可以使用config“ diff.renamelimit config”增加该值

令人担心的是,如果未配置此配置,是否会合并错误,缺少任何代码?我正在尝试合并(git merge)具有巨大变化的2个分支。

有人可以提供更多有关此配置设置的信息吗?


我有相同的经验,我可以确认该消息只是警告,除了一些讨厌的合并冲突外没有其他后果。
约翰H

我在diff命令上
收到

Answers:


52

您的内容是安全的。

据我了解,git实际上没有任何关于一流rename操作的概念(只有bzr大型3个DVCS才有):mv在基础机器之上的is is糖,基本上是anadd和a rm。但是,由于git可以跟踪在此类操作期间更改的内容,因此可以使用启发式方法猜测anadd和a何时rm实际上是a mv。因为这样做比仅显示git实际记录要花费更多的工作-用于git-diff解释它的文档“ ...需要O(n ^ 2)处理时间,其中n是潜在的重命名/复制目标的数量”,所以git不会尝试当涉及太多文件时。您提到的设置仅控制该阈值。


22
“您的内容是安全的”-尽管如果检测遗漏了在合并的一侧重命名而在另一侧进行了更改的文件,则将出现合并冲突,如果检测到重命名,则可能不会发生。合并不会错,但完成操作可能需要更多的用户努力。
卡斯卡贝尔2011年

2
感谢Hank和Jefromi。在任何情况下,设置此“ diff.renamelimit config”真的有用吗?
Senthil A Kumar

4
如果有人也想知道此设置是否有用:是的,当您在一个分支中移动了数百个文件而在另一个分支中对这些文件进行了许多更改时,它可以帮助您合并分支。当我在一个分支上进行大量代码重构而在另一分支上进行一些正在进行的工作时,我遇到了这样的情况。
korda 2015年

38

万一这对任何人都有用,我在一个分支中有很多文件(数百个,如果不是数千个),而在另一个分支中还没有。跑步

$ git config merge.renamelimit 15345

合并时出现以下错误

$ git merge master
.
.
.
warning: inexact rename detection was skipped due to too many files.
warning: you may want to set your merge.renamelimit variable to at least 15345 and retry the command.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.