Скажіть, що інший хлопець створив бар поверх foo, але ви тим часом створили baz, а потім злилися, даючи історію
$ git lola
* 2582152 (HEAD, master) Об'єднання гілки 'otherguy'
| \
| * c7256de (otherguy) бар
* | b7e7176 baz
| /
* 9968f79 foo
Примітка: git lola - це нестандартний, але корисний псевдонім.
Без кісток з git revert
:
$ git revert HEAD
фатально: Команда 2582152 ... є об'єднанням, але не було задано жодного варіанту.
Чарльз Бейлі дав чудову відповідь, як завжди. Використовуючи git revert
як в
$ git revert --no-edit -m 1 ГЛАВА
[master e900aad] Скасувати "Об'єднання гілки" otherguy ""
0 файлів змінено, 0 вставок (+), 0 видалень (-)
режим видалення 100644 бар
ефективно видаляє bar
та створює історію
$ git lola
* e900aad (HEAD, master) Скасувати "Об'єднання гілки" otherguy ""
* 2582152 Об’єднати відділення 'otherguy'
| \
| * c7256de (otherguy) бар
* | b7e7176 baz
| /
* 9968f79 foo
Але я підозрюю, що ви хочете відкинути комісію злиття:
$ git скидання - тверда голова ^
HEAD зараз на рівні b7e7176 баз
$ git lola
* b7e7176 (HEAD, master) baz
| * c7256de (otherguy) бар
| /
* 9968f79 foo
Як зазначено в git rev-parse
посібнику
<rev>^
, наприклад HEAD ^,v1.5.1^0
суфікс ^
до параметра ревізії означає перший батьківський об'єкт цього об'єкта. ^<n>
означає n -го батьків ( тобто <rev>^
еквівалентно <rev>^1
). Як спеціальне правило, <rev>^0
означає саме фіксація і використовується, коли <rev>
це ім'я об'єкта тега, який посилається на об'єкт фіксації.
тому перед тим, як викликати git reset
, HEAD^
(або HEAD^1
) був b7e7176 і HEAD^2
був c7256de, тобто відповідно перший і другий батьки комісії злиття.
Будьте обережні, git reset --hard
оскільки це може знищити роботу.