Angenommen, der andere Typ hat eine Leiste über foo erstellt, aber Sie haben in der Zwischenzeit baz erstellt und sich dann zusammengeschlossen, um eine Geschichte von zu geben
$ git lola
* 2582152 (HEAD, Master) Zweig 'otherguy' zusammenführen
| \
| * c7256de (otherguy) bar
* | b7e7176 baz
| /
* 9968f79 foo
Hinweis: Git Lola ist ein nicht standardmäßiger, aber nützlicher Alias.
Keine Würfel mit git revert
:
$ git KOPF zurücksetzen
fatal: Commit 2582152 ... ist eine Zusammenführung, aber es wurde keine Option -m angegeben.
Charles Bailey gab wie immer eine ausgezeichnete Antwort . Verwenden git revert
wie in
$ git revert --no-edit -m 1 HEAD
[master e900aad] "Zweig 'otherguy' zusammenführen"
0 Dateien geändert, 0 Einfügungen (+), 0 Löschungen (-)
Löschmodus 100644 bar
effektiv löscht bar
und produziert eine Geschichte von
$ git lola
* e900aad (HEAD, Master) "Zweig 'otherguy' zusammenführen"
* 2582152 Zweig 'otherguy' zusammenführen
| \
| * c7256de (otherguy) bar
* | b7e7176 baz
| /
* 9968f79 foo
Aber ich vermute, Sie möchten das Merge-Commit wegwerfen :
$ git reset --hard HEAD ^
HEAD ist jetzt bei b7e7176 baz
$ git lola
* b7e7176 (KOPF, Meister) baz
| * c7256de (otherguy) bar
| /
* 9968f79 foo
Wie im Handbuch dokumentiertgit rev-parse
<rev>^
Beispiel: HEAD ^,v1.5.1^0
Ein Suffix ^
zu einem Revisionsparameter bedeutet das erste übergeordnete Element dieses Festschreibungsobjekts. ^<n>
bedeutet das n- te Elternteil ( dh <rev>^
entspricht äquivalent zu <rev>^1
). In der Regel <rev>^0
bedeutet dies das Festschreiben selbst und wird verwendet, wenn <rev>
der Objektname eines Tag-Objekts auf ein Festschreibungsobjekt verweist.
Vor dem Aufrufen git reset
war HEAD^
(oder HEAD^1
) also b7e7176 und HEAD^2
war c7256de, dh der erste und der zweite Elternteil des Merge-Commits.
Seien Sie vorsichtig, git reset --hard
da dies die Arbeit zerstören kann.