使用git mv移动文件显示为已删除/已添加

时间:2017-01-22 16:18:55

标签: git

我的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有一些变化门槛。如果对文件的更改超过某个百分比,则不要将其视为重命名的文件,而是将旧文件删除并创建新文件。

1 个答案:

答案 0 :(得分:2)

这是对的。 Git不跟踪重命名;相反,它会查看文件内容如何更改并从一个位置移动到另一个位置。如果一个文件消失并且其内容足以以新名称显示,则git将其显示为重命名。 (每当您查看提交历史记录时,都会立即执行此操作。)

来自git diff --help

  

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

     

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