Скажем, другой парень создал панель поверх foo, но вы тем временем создали baz, а затем объединились, получив историю
$ git lola
* 2582152 (HEAD, master) Merge branch 'otherguy'
|\
| * c7256de (otherguy) bar
* | b7e7176 baz
|/
* 9968f79 foo
Примечание: git lola - этонестандартный, но полезный псевдоним.
Никаких кубиков с git revert
:
$ git revert HEAD
fatal: Commit 2582152... is a merge but no -m option was given.
Чарльз Бейли, как обычно, дал отличный ответ .Использование git revert
, как в
$ git revert --no-edit -m 1 HEAD
[master e900aad] Revert "Merge branch 'otherguy'"
0 files changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 bar
, эффективно удаляет bar
и создает историю
$ git lola
* e900aad (HEAD, master) Revert "Merge branch 'otherguy'"
* 2582152 Merge branch 'otherguy'
|\
| * c7256de (otherguy) bar
* | b7e7176 baz
|/
* 9968f79 foo
Но я подозреваю, что вы хотите выбросить слияниеcommit:
$ git reset --hard HEAD^
HEAD is now at b7e7176 baz
$ git lola
* b7e7176 (HEAD, master) baz
| * c7256de (otherguy) bar
|/
* 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
, потому чтоэто может разрушить работу.