Git Merge: Entfernen von Dateien, die ich behalten möchte!
Wie können Sie zwei Zweige in Git zusammenführen und dabei beibehalten?notwendig Dateien aus einer Filiale?
Wenn beim Zusammenführen von zwei Zweigen eine Datei in einem Zweig und nicht in einem anderen Zweig gelöscht wurde, wird die Datei letztendlich gelöscht.
Zum Beispiel:
Eine Datei ist im Master vorhanden, wenn Sie eine neue Verzweigung erstellenSie entfernen die Datei vom Master, da wir sie (noch) nicht benötigen.Sie nehmen Änderungen in der Verzweigung vor, um eine Funktion hinzuzufügen.was auf der vorhandenen Datei beruhtSie machen Fehlerbehebungen in Master (kann nicht verworfen werden)Sie verschmelzen eines Tages und die Datei ist weg!Wie zu reproduzieren:
Erstelle ein Git Repo mit einer Datei.
git init
echo "test" > test.txt
git add .
git commit -m "initial commit"
Erstellen Sie eine Niederlassung
git branch branchA
Löschen Sie die Datei im Master
git rm test.txt
git commit -m "removed file from master"
Nehmen Sie in branchA JEGLICHE Änderungen vor, 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 aus, wie ich diese beiden Zweige zusammengeführt habe, wird die Datei test.txt gelöscht. Angenommen, wir wären essich auf die Datei verlassen zumbranchA
, das ist ein großes Problem.
Fehlgeschlagene Beispiele:
1 zusammenführen
git checkout branchA
git merge master
ls test.txt
2 zusammenführen
git checkout master
git merge branchA
ls test.txt
Rebase 1
git checkout branchA
git rebase master
ls test.txt