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 revert
jak 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 bar
i 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-parse
instrukcji
<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>^0
oznacza 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^2
był c7256de, to znaczy , odpowiednio, pierwsze i drugie rodzice seryjnej zatwierdzenia.
Bądź ostrożny, git reset --hard
ponieważ może zniszczyć pracę.