我的Git仓库中的特定目录中有许多文件。我将所有这些更改为不同程度,添加它们,然后通过git mv
将文件移动到新的子目录。现在当我git status
时,我看到了这一点:
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有一些变化门槛。如果对文件的更改超过某个百分比,则不要将其视为重命名的文件,而是将旧文件删除并创建新文件。
答案 0 :(得分:2)
这是对的。 Git不跟踪重命名;相反,它会查看文件内容如何更改并从一个位置移动到另一个位置。如果一个文件消失并且其内容足以以新名称显示,则git将其显示为重命名。 (每当您查看提交历史记录时,都会立即执行此操作。)
<强>
-M[<n>]
强>
的--find-renames[=<n>]
强>检测重命名。如果指定
n
,则它是相似性指数的阈值(即与文件大小相比的添加/删除量)。例如,-M90%
表示如果超过90%的文件未更改,Git应将删除/添加对视为重命名。如果没有%
符号,则该数字将作为分数读取,并在其前面加上小数点。即,-M5
变为0.5,因此与-M50%
相同。同样,-M05
与-M5%
相同。要将检测限制为精确重命名,请使用-M100%
。默认相似性指数为50%。