Ich nahm Änderungen an meiner Codebasis vor und merkte nicht, dass ich mich in einem alten Themenzweig befand. Um sie zu übertragen, wollte ich sie verstauen und dann auf einen neuen Zweig außerhalb des Masters anwenden. Ich habe git stash pop
laufende Änderungen in diesen neuen Zweig übertragen und dabei vergessen, dass ich vor dem Erstellen des neuen Zweigs keine neuen Änderungen in den Master übernommen hatte. Dies führte zu einer Reihe von Zusammenführungskonflikten und dem Verlust eines sauberen Vorrats meiner Änderungen (da ich Pop verwendet habe).
Wie kann ich meine versteckten Änderungen wiederherstellen, um sie ordnungsgemäß anzuwenden, nachdem ich den neuen Zweig korrekt neu erstellt habe?
git stash drop
als letzten Schritt ein hinzufügen , um den unerwünschten Vorrat von # 2 loszuwerden.git stash pop
folgenden Themen : "Das Anwenden des Status kann bei Konflikten fehlschlagen. In diesem Fall wird er nicht aus der Stash-Liste entfernt. Sie müssen die Konfliktegit stash drop
manuell lösen und anschließend manuell aufrufen ." ( git-scm.com/docs/git-stash )Zum Glück
git stash pop
ist nicht das Versteck wechselt im Fall eines Konflikts!Also nichts, worüber Sie sich Sorgen machen müssen, bereinigen Sie einfach Ihren Code und versuchen Sie es erneut.
Angenommen, Ihre Codebasis war vorher sauber, Sie könnten in diesen Zustand zurückkehren mit:
git checkout -f
Dann tun Sie das, was Sie vergessen haben, z. B.
git merge missing-branch
feuern Sie danach
git stash pop
erneut und Sie erhalten den gleichen Vorrat, der zuvor in Konflikt geraten ist.Achtung: Der Stash ist sicher, nicht festgeschriebene Änderungen im Arbeitsverzeichnis jedoch nicht. Sie können durcheinander geraten.
quelle
git stash pop
es versucht, automatisch zusammenzuführen, kollidierte und behielt es.git stash pop
so oft aufrufen können, wie Sie benötigen, bis er ohne Konflikt endet. Ja, nach Ihrem Konflikt ist das Arbeitsverzeichnis durcheinander. Sie können es jedoch bereinigen undgit stash pop
erneut aufrufen .git checkout -f
!Die Anweisungen hier sind etwas kompliziert, daher werde ich etwas Unkomplizierteres anbieten:
git reset HEAD --hard
Geben Sie alle Änderungen am aktuellen Zweig auf...
Führen Sie nach Bedarf Zwischenarbeiten durchgit stash pop
Legen Sie den Vorrat zu einem späteren Zeitpunkt erneut ab, wenn Sie bereit sindquelle
muss funktionieren, wenn Ihr vorheriger Zustand sauber ist.
quelle