Wie können Sie zwei Zweige in Git zusammenführen, ohne dass erforderlich Dateien aus einer Verzweigung?
Wenn beim Zusammenführen zweier Zweige eine Datei in dem einen Zweig gelöscht wurde und in dem anderen nicht, wird die Datei letztendlich gelöscht.
Zum Beispiel:
- Eine Datei ist im Master vorhanden, wenn Sie einen neuen Zweig erstellen
- Sie entfernen die Datei aus dem Master, da wir sie (noch) nicht benötigen.
- Sie nehmen Änderungen an der Verzweigung vor, um eine Funktion hinzuzufügen, die sich auf die vorhandene Datei stützt
- Sie nehmen Fehlerbehebungen im Master vor (kann nicht weggeworfen werden)
- Sie fusionieren eines Tages, und die Datei ist weg!
Wie man sich fortpflanzt:
-
Erstellen Sie ein Git Repo mit einer Datei.
git init echo "test" > test.txt git add . git commit -m "initial commit"
-
Eine Verzweigung erstellen
git branch branchA
-
Löschen Sie die Datei im Master
git rm test.txt git commit -m "removed file from master"
-
Jegliche Änderungen in ZweigA vornehmen, die die gelöschte Datei nicht berühren (sie muss unverändert bleiben, um Konflikte zu vermeiden)
git checkout branchA touch something.txt git add . git commit -m "some branch changes"
Von hier an wird die Datei test.txt bei jeder Möglichkeit, die ich gefunden habe, um diese beiden Zweige zusammenzuführen, gelöscht. Angenommen, wir würden die sich auf die Datei pour branchA
ist dies ein großes Problem.
Fehlende Beispiele:
Verschmelzen 1
git checkout branchA
git merge master
ls test.txt
Verschmelzen 2
git checkout master
git merge branchA
ls test.txt
Rebase 1
git checkout branchA
git rebase master
ls test.txt
0 Stimmen
Ich glaube, dass Sie dieses Problem lösen können, indem Sie ZweigA (solange er nicht öffentlich ist) vor dem Zusammenführen von der letzten Master-Version umbasen. Ein interaktives Rebase gibt Ihnen die Möglichkeit, Git mitzuteilen, dass Sie die Datei unbedingt haben wollen, dann sollte das Zusammenführen ohne Probleme vonstatten gehen.