2017-05-12 22 views
1

重命名我們重命名並改變了一些git的文件,現在Git是顯示它刪除,並添加。後期標記文件Git中

是否有可能標誌着後提交的重命名,例如衍合操作的文件?

將是很好的糾正我們的歷史。允許力推;在GIT)

+1

在內部,Git不會跟蹤重命名。它總是「在這裏刪除200行,在那裏添加200行」。只有識別重命名的輸出才能顯示給你。 –

+0

要做到這一點的唯一方法是拆分改變的提交*和*重命名/移動文件只做兩個之一,即。將提交分成一個提交進行重命名/移動,另一個更改其內容。 –

回答

2

不,這是不可能的文件標記爲更名後的事實/移動,因爲沒有辦法實際文件標記爲重命名/移動所有,直到永遠。

內部在資源庫中,重命名或移動不跟蹤。

相反,工具頂部的git存儲庫,即。 git可執行文件和它的所有兄弟可執行文件正在做這個繁重的工作。

特別是,當添加一個文件時,git的某些命令會查看其餘的提交,以查看它是否可以找到該文件的來源,如另一個被刪除的文件。 Git甚至會嘗試匹配內容不相同但不得不停止的文件。

這意味着你沒有在同一個文件的修改提交對於這個過於粗放「尋找類似的文件」算法來考慮的候選這種移動/重命名日誌輸出。

所以基本上你唯一的選擇是回去並重做那個提交,把它分成兩個(或多個)不同的提交,你可以移動/重命名文件或改變它們,但不能在同一個提交中。

因此,舉例來說,如果你的提交歷史是這樣的:

Commit #1: Introduce some files 
Commit #2: Move and change said files 
Commit #3: Further change the moved files 

你把它分解成這樣:

Commit #1: Introduce some files 
Commit #2: Move files 
Commit #3: Change said files 
Commit #4: Further change the moved files 

這應該能看到重命名git的工具/正確移動。

您也可以嘗試通過降低你對文件的修改的量,但那麼你剛纔的戰鬥閾值,以它分裂。更好地通過在同一提交中執行移動/重命名更改而不是兩者來減少不匹配的可能性爲0。