2017-02-02 85 views
0

我有兩個分支,我嘗試合併。在原始分支中,我有一些文件在第二個分支中移動到不同位置。問題是,當我嘗試從原始分支合併時,它不會將更改應用到新文件位置,即使它很難檢測到我使用git move移動了這些文件。將文件移動到不同的目錄後合併分支

我創建了以下方案,以更好地解釋我的問題:

我有分支a與文件a/1.txta/2.txt。在分支b我做了git mv1.txt2.txt從目錄ab

下一個..分支a我修改a/1.txt,分支b當我嘗試合併分支a到它,它試圖創建a/1.txt代替(目錄b)應用上的新文件的位置變化。

我該如何解決這個問題?

回答

1

我提供了一個小的例子,最有可能顯示您的問題:

mkdir test 
cd test/ 
git init 
echo -e '1\n2\n3' >foo 
git add foo 
git commit -m foo 
git checkout -b bar 
echo -e '1\n4\n5' >bar 
rm foo 
git add --all . 
git commit -m bar 
git checkout - 
echo -e '6\n2\n3' >foo 
git add foo 
git commit -m foo2 
git merge bar 

現在你會得到一個錯誤說

# CONFLICT (modify/delete): foo deleted in bar and modified in HEAD. Version HEAD of foo left in tree. 
# Automatic merge failed; fix conflicts and then commit the result. 

如果改爲降低相似的水平是必要的識別重命名爲-X find-renames=30%(相似度爲33%,因爲三條線中的一條相同),合併效果更好:

git merge --abort 
git merge bar -X find-renames=30% 
git mergetool 
git commit --no-edit