Die bisher gegebenen Antworten sind nicht ideal, da sie viel unnötige Arbeit zur Lösung von Zusammenführungskonflikten erfordern oder zu viele Annahmen treffen, die häufig falsch sind. So macht man es perfekt. Der Link führt zu meiner eigenen Seite.
Sie haben nicht festgeschriebene Änderungen an my_branch
, für die Sie eine Festschreibung vornehmen möchten master
, ohne alle Änderungen von zu übernehmen my_branch
.
Beispiel
git merge master
git stash -u
git checkout master
git stash apply
git reset
git add example.js
git commit
git checkout .
git clean -f -d
git checkout my_branch
git merge master
git stash pop
Erläuterung
Beginnen Sie mit der Zusammenführung master
in Ihrem Zweig, da Sie dies ohnehin irgendwann tun müssen. Jetzt ist der beste Zeitpunkt, um Konflikte zu lösen.
Die -u
Option (aka --include-untracked
) in git stash -u
hindert Sie daran , untracked Dateien zu verlieren , wenn Sie später tun git clean -f -d
innerhalb master
.
Nachdem git checkout master
es wichtig ist, dass Sie NICHT tun git stash pop
, weil Sie diesen Vorrat später benötigen. Wenn Sie das Versteck Pop erstellt in my_branch
und führen Sie dann git stash
in master
, werden Sie unnötige merge Konflikte verursachen , wenn Sie später , dass Stash gelten my_branch
.
git reset
stuft alles auf, was daraus resultiert git stash apply
. Beispielsweise werden Dateien, die im Stash geändert wurden, aber nicht vorhanden sind master
, als Konflikte "von uns gelöscht" bereitgestellt.
git checkout .
und git clean -f -d
verwerfen Sie alles, was nicht festgeschrieben ist: alle Änderungen an nachverfolgten Dateien sowie alle nicht nachverfolgten Dateien und Verzeichnisse. Sie sind bereits im Stash gespeichert und master
würden beim Zurückschalten unnötige Zusammenführungskonflikte verursachen, wenn Sie zurück zu wechseln my_branch
.
Der letzte git stash pop
basiert auf dem Original my_branch
und verursacht daher keine Zusammenführungskonflikte. Wenn Ihr Stash jedoch nicht verfolgte Dateien enthält, die Sie als Master festgelegt haben, beschwert sich git, dass "nicht verfolgte Dateien nicht aus dem Stash wiederhergestellt werden konnten". Um diesen Konflikt zu beheben, löschen Sie die Dateien von Ihrem Arbeits Baum, dann git stash pop
, git add .
und git reset
.