我该如何告诉Git它错误地移动/重命名了文件(误报)?

12

我正在使用Git合并两个分支,每个分支的工作量为一周,并且有一些文件被移动、重命名和修改。

在某些情况下,Git似乎完全错误地处理了这些文件,并且它说文件a被移动到文件b,但实际上它们是完全没有关联的。

我遇到了相当多的这种误判情况(约25%),我想影响Git使用的算法,以确定文件是被移动、重命名还是新增的。

  • 我希望将名称的优先级提高。(例如,文件a从文件夹foo移动到文件夹b),但是Git坚持认为它是重命名为文件b在文件夹foo中——完全不相关)
  • 我希望将Git认为文件需要重命名或移动的相似度指数提高。

我知道我可以做后者,希望我也能做前者,但今天我的搜索技能正在失败。


2
请注意,即使您找到了修改启发式的方法,它也只适用于您的本地机器。就像 git mv 命令是 git rmgit add 的速记方式一样,在重命名时没有任何元数据被保留。 - Troels Thomsen
没问题。现在当我执行差异比较时,它看起来很糟糕,我无法确定到底发生了什么变化。而我的目标是能够可靠地看到真正发生了什么变化,并进行必要的调整。 - Krzysztof Kozmic
1个回答

6

我也注意到了这一点。我认为“--find-renames=90”会比默认设置更严格。

根据git diff文档http://git-scm.com/docs/git-diff

-M[n] --find-renames[=n] 检测重命名。如果指定了n,则它是相似性指数的阈值(即添加/删除与文件大小相比的量)。例如,-M90%表示如果超过90%的文件未更改,则git应将删除/添加对视为重命名。

-C[n] --find-copies[=n] 检测复制和重命名。另请参见--find-copies-harder。如果指定了n,则其含义与-Mn相同。


看起来文档已经从 kernel.org 移动了,是否还有其他地方可以查找它? - Roman
这对我来说出现了错误。你能否更具体地说明一下语法呢?git --find-renames=100 未知选项:--find-renames=100 - fIwJlxSzApHEZIl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接