REVERSIBLE Methode zum Verwerfen aller Änderungen:
Ich fand diese Frage, nachdem ich eine Zusammenführung vorgenommen und vergessen hatte, sich unmittelbar danach zur Kasse zu entwickeln . Sie haben es erraten: Ich habe angefangen, einige Dateien direkt auf dem Master zu ändern . D'Oh! Da meine Situation kaum einzigartig ist (wir haben es alle getan, nicht wahr; ->), biete ich eine umkehrbare Möglichkeit an, alle Änderungen zu verwerfen, damit der Meister wieder wie entwickelt aussieht.
Nachdem ich a ausgeführt hatte, um git diff
zu sehen, welche Dateien geändert wurden, und den Umfang meines Fehlers zu bewerten, führte ich Folgendes aus:
git stash
git stash clear
Nachdem alle Änderungen zuerst gespeichert worden waren, wurden sie als nächstes gelöscht. Alle Änderungen, die an den fehlerhaften Master- Dateien vorgenommen wurden, wurden entfernt und die Parität wiederhergestellt.
Angenommen, ich wollte diese Änderungen jetzt wiederherstellen. Ich kann dies tun. Der erste Schritt besteht darin, den Hash des Stashs zu finden, den ich gerade gelöscht / gelöscht habe:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
Nachdem ich den Hash gelernt hatte, stellte ich die nicht festgeschriebenen Änderungen erfolgreich wieder her mit:
git stash apply hash-of-cleared-stash
Ich wollte diese Änderungen nicht wirklich wiederherstellen, sondern nur überprüfen, ob ich sie zurückerhalten kann, also habe ich sie erneut gelöscht.
Eine andere Möglichkeit besteht darin , den Stash auf einen anderen Zweig anzuwenden , anstatt die Änderungen zu löschen. Wenn Sie also Änderungen löschen, die durch die Arbeit am falschen Zweig vorgenommen wurden, haben stash
Sie viel Flexibilität, um sich von Ihrem Boo-Boo zu erholen.
Wie auch immer, wenn Sie ein reversibles Mittel zum Löschen von Änderungen an einem Zweig wünschen, ist das Vorstehende in diesem Anwendungsfall weniger gefährlich.
git reset --hard HEAD^