【问题标题】:How do I tell Git it got moves/renames wrong (false positives)我如何告诉 Git 它的移动/重命名错误(误报)
【发布时间】:2011-08-05 09:37:18
【问题描述】:

我正在合并 git 中的两个分支,每个分支都有一周的工作量,并且一些文件被移动或重命名和修改。

在某些情况下,Git 似乎完全搞错了,它说文件 a 已移至文件 b,而实际上它们完全不相关。

我有很多这样的误报(大约 25%)。我想影响 Git 用来确定文件是被移动、重命名还是新文件的算法。

  • 我想为名称分配更高的优先级。 (文件 a 已从文件夹 foo 移动到文件夹 b)但 git 坚持将其重命名为文件夹 foo 中的文件 b - 完全不相关)
  • 我想提高 Git 认为要重命名/移动文件的相似度指数

我知道我在某处读过书,我可以做到后者,我希望我也能做到前者,但我的谷歌搜索技能今天让我失望了。

【问题讨论】:

  • 请注意,即使您找到了改变启发式的方法,它也只会应用于您的本地计算机。正如git mv 命令是git rmgit add 的简写一样,不会保留有关重命名的元数据。
  • 是的。这很好。现在,当我做差异时,它看起来像垃圾,我不知道真正发生了什么变化。这就是我的目标 - 能够可靠地查看真正发生了什么变化并在需要时进行调整。

标签: git version-control merge dvcs


【解决方案1】:

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

来自 git diff 文档 http://git-scm.com/docs/git-diff

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

-C[n] --查找副本[=n] 检测副本以及重命名。另请参见 --find-copies-harder。如果指定了 n,则与 -Mn 的含义相同。

【讨论】:

  • 文档好像是从 kernel.org 移过来的,还有其他地方可以查吗?
  • 这对我来说是一个错误。你能对语法更具体一点吗? git --find-renames=100 未知选项:--find-renames=100
猜你喜欢
  • 2012-07-24
  • 2020-01-20
  • 2015-12-17
  • 1970-01-01
  • 2020-06-24
  • 2012-05-30
  • 2017-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多