2017-01-22 48 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%。