Mit SVN ist es einfach, ein Commit rückgängig zu machen, aber wie geht das mit Git?
Mit SVN ist es einfach, ein Commit rückgängig zu machen, aber wie geht das mit Git?
Antworten:
Verwenden Sie Folgendes, um ein neues Commit zu erstellen, mit dem die Änderungen eines früheren Commits rückgängig gemacht werden:
$ git revert <commit>
Es ist auch möglich, ein Commit von einem beliebigen Punkt in der Vergangenheit durch erneutes Basieren und anschließendes Zurücksetzen zu entfernen. Dies möchten Sie jedoch nicht, wenn Sie Ihre Commits bereits in ein anderes Repository verschoben haben (oder eine andere Person von Ihnen abgerufen hat). .
-m <parent number>
Option git revert
angeben , um anzugeben, welche Änderung zurückgesetzt werden soll. Wenn Sie eine Zusammenführung von nicht veröffentlichtem Verlauf rückgängig machen möchten, verwenden Sie git reset --hard HEAD^1
.
-m
bedeutet, dass eine zukünftige Zusammenführung aus dem nicht zusammengeführten Zweig nicht die Änderungen vor dieser Zusammenführung enthält! Unter schacon.github.com/git/howto/revert-a-faulty-merge.txt finden Sie geeignete Methoden zum erneuten Zusammenführen eines nicht zusammengeführten Zweigs.
Um ein Zusammenführungs- Commit zurückzusetzen, müssen Sie Folgendes verwenden : git revert -m <parent number>
. Um beispielsweise das zuletzt zusammengeführte Commit mit dem übergeordneten Element mit der Nummer 1 zurückzusetzen, würden Sie Folgendes verwenden:
git revert -m 1 HEAD
Um ein Zusammenführungs-Commit vor dem letzten Commit zurückzusetzen, gehen Sie wie folgt vor:
git revert -m 1 HEAD^
Verwenden Sie git show <merge commit SHA1>
, um die Eltern zu sehen, die Nummerierung ist die Reihenfolge, in der sie erscheinen, zMerge: e4c54b3 4725ad2
Dokumentation zum Zusammenführen von Git: http://schacon.github.com/git/git-merge.html
Diskussion zum Zusammenführen von Git (verwirrend, aber sehr detailliert): http://schacon.github.com/git/howto/revert-a-faulty-merge.txt
git show <merge commit SHA1>
, um die Eltern zu sehen, die Nummerierung ist die Reihenfolge, in der sie erscheinen, zBMerge: e4c54b3 4725ad2
git revert -m 1 SHA1
Dieser Befehl hat bei mir funktioniert, um ein Zusammenführungs-Commit zurückzusetzen, bei dem es sich um mehrere Zusammenführungs-Commits vor dem Kopf handelte und unter denen viele Commits lagen.
git reset --hard HEAD^
Verwenden Sie den obigen Befehl, um Zusammenführungsänderungen rückgängig zu machen.
Wenn Sie nicht oder später festschreiben möchten (die Festschreibungsnachricht wird weiterhin für Sie vorbereitet, die Sie auch bearbeiten können):
git revert -n <commit>