Powiedzmy, że ten drugi facet stworzył pasek na foo, ale w międzyczasie stworzyłeś baz, a następnie połączyłeś się, dając historię
$ git lola
* 2582152 (HEAD, master) Scal gałąź „otherguy”
| \
| * Pasek c7256de (otherguy)
* | b7e7176 baz
| /
* 9968f79 foo
Uwaga: git lola to niestandardowy, ale użyteczny alias.
Brak kości z git revert:
$ git przywróć HEAD
fatal: Commit 2582152 ... to scalenie, ale nie podano opcji -m.
Charles Bailey jak zwykle udzielił doskonałej odpowiedzi . Używanie git revertjak w
$ git revert --no-edit -m 1 HEAD
[master e900aad] Przywróć „Scal gałąź„ otherguy ””
0 plików zmienionych, 0 wstawek (+), 0 usunięć (-)
tryb kasowania 100644 bar
skutecznie usuwa bari tworzy historię
$ git lola
* e900aad (HEAD, master) Cofnij „Scal gałąź„ otherguy ””
* 2582152 Scal oddział „otherguy”
| \
| * Pasek c7256de (otherguy)
* | b7e7176 baz
| /
* 9968f79 foo
Ale podejrzewam, że chcesz wyrzucić zatwierdzenie scalania:
$ git reset --hard HEAD ^
HEAD jest teraz na bazie b7e7176
$ git lola
* b7e7176 (HEAD, master) baz
| * Pasek c7256de (otherguy)
| /
* 9968f79 foo
Jak udokumentowano w git rev-parseinstrukcji
<rev>^, np. HEAD ^,v1.5.1^0
sufiks ^parametru rewizji oznacza pierwszego rodzica tego obiektu zatwierdzenia. ^<n>oznacza n- ty rodzic ( tj. <rev>^ jest równoważny <rev>^1). Jako specjalna zasada <rev>^0oznacza samo zatwierdzenie i jest używane, gdy <rev>jest nazwą obiektu znacznika, który odnosi się do obiektu zatwierdzenia.
więc przed wywołaniem git reset, HEAD^(a HEAD^1) był b7e7176 i HEAD^2był c7256de, to znaczy , odpowiednio, pierwsze i drugie rodzice seryjnej zatwierdzenia.
Bądź ostrożny, git reset --hardponieważ może zniszczyć pracę.