2012-10-21 57 views
3

Git不會跟蹤重命名更新git的MV指數

我有一個文件dir1/some.class。 我將它複製爲dir2/some.class並提交+推送。 幾周後,我刪除了dir1版本。

我可以教Git來表現出這是一個動作,而不是一個新文件嗎?
因此,我將從其他分支合併的dir1/some.class的所有更改實際上將合併到dir2/some.class

git checkout mybranch 
git config merge.renameLimit 100 
git merge --no-ff -X rename-threshold=80 master 
git config --unset merge.renameLimit 

嘗試了一些文件得到了合併。但有些不。特別是我缺少的是git log能力,看到dir2/class發生在過去的變化爲dir1/class,但這並沒有發生。

enter image description here

什麼actualy幫助我爲

低門檻改名(10%的相似性來考慮改名的文件)
大merge.renameLimit(消耗合併過程中有很多的RAM)

git checkout mybranch 
git config merge.renameLimit 999999 
git merge --no-ff -X rename-threshold=10 -Xignore-space-change master 
git config --unset merge.renameLimit 

還可以查看下面標記的答案。

回答

2

我會試試這個:在你正在合併的分支中,將dir1重命名爲dir2(如果你願意,你可以在一個新的臨時分支上執行此操作)。然後將其合併到主分支中。

+0

很棒的建議。我一定會試一試。太糟糕了,在項目中有很多重命名,他們不是直接使用重命名腳本。雖然我害怕重新命名它在一個新的分支會帶來我相同的情況,當我試圖合併所有的變化回到主人;) – Alex

+0

這可能是正確的答案,因此我將它標記爲正確的,但實際上有什麼幫助我正在減少重命名閾值並增加renameLimit,因爲我在重構後有很多重命名,沒有任何具體的結構。 – Alex