2017-01-22 69 views
-1

我有我的Git回购特定目录中的文件数量。我将它们全部改为不同程度,添加它们,然后通过git mv将文件移动到新的子目录。现在,当我做git status我看到这一点:文件移动与git mv显示为删除/添加

renamed: path/file1.ext -> path/to/file1.ext 
new file: path/to/file2.ext 
deleted: path/file2.ext 

file2.ext确实有它比file1.ext更实质性的变化没有,但仍然......为什么不file2.ext显示为被改名?

它几乎看起来好像git有一些变化的门槛。如果对文件的更改超过某个百分比,则不要将其视为重命名的文件,而应将其视为旧文件被删除并创建新文件。

回答

2

这是正确的。 Git不会跟踪重命名;而是看看文件内容如何变化并从一个位置移动到另一个位置。如果一个文件消失并且其中的内容足够以新名称显示,则git会将其显示为重命名。 (这是不管你什么时候看提交历史飞完成。)

git diff --help

-M[<n>]
--find-renames[=<n>]

检测重命名。如果指定了n,则它是相似度指数的阈值(即与文件大小相比的添加/删除量)。例如,-M90%表示如果文件的90%以上没有更改,Git应该考虑删除/添加对是重命名。如果没有%符号,则该数字将作为分数读取,并在其之前有一个小数点。即,-M5变为0.5,因此与-M50%相同。同样,-M05-M5%相同。要将检测限制为精确重命名,请使用-M100%。默认相似度指数为50%。