2017-02-02 2 views
0

Ich habe zwei Zweige, die ich zusammenführen möchte. Im ursprünglichen Zweig habe ich einige Dateien, die im 2. Zweig an einen anderen Ort verschoben wurden. Das Problem ist, dass, wenn ich versuche, aus dem ursprünglichen Zweig zu verschmelzen, es die Änderungen nicht auf den neuen Speicherort der Datei anwendet, auch wenn es erkannt hat, dass ich die Dateien mit git move verschoben habe.Zusammenführen von Zweigen nach dem Verschieben von Dateien in ein anderes Verzeichnis

Ich habe das folgende Szenario mein Problem besser zu erklären:

Ich habe Zweig a mit Dateien a/1.txt, a/2.txt. im Zweig b habe ich git mv bis 1.txt und 2.txt aus dem Verzeichnis a bis b.

nächste .. in Zweig a I modifizierte a/1.txt, in Zweig b wenn ich fusionieren versuchen Zweig a hinein, versucht es a/1.txt zu erstellen, anstatt die Änderung Standort auf der neuen Datei der Anwendung (im Verzeichnis b).

Wie behebe ich dieses Problem?

Antwort

1

vorgesehen ich ein kleines Beispiel, das höchstwahrscheinlich Ihr Problem zeigt:

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 

Jetzt erhalten Sie eine Fehlermeldung,

# 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. 

Wenn Sie stattdessen das Niveau der Ähnlichkeit verringern, die notwendig ist, ein zu identifizieren umbenennen mit -X find-renames=30% (Ähnlichkeit war 33%, als einer von drei Zeilen derselben war), die Zusammenführung besser funktioniert:

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