104

我知道默认的重命名限制是 100,我们可以使用配置增加这个值diff.renamelimit config

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

有人可以对此配置设置进行更多说明吗?

4

2 回答 2

68

您的内容是安全的。

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

于 2011-03-03T13:53:35.743 回答
64

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

$ 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.
于 2018-03-21T09:53:38.730 回答