Скажем, другой парень создал панель поверх foo, но вы тем временем создали базу, а затем слились, дав историю
$ git lola
* 2582152 (HEAD, master) Слияние веток 'otherguy'
| \
| * c7256de (другой) бар
* | b7e7176 баз
| /
* 9968f79 foo
Примечание: git lola - нестандартный, но полезный псевдоним.
Нет кости с git revert
:
$ git revert HEAD
фатальный: совершить 2582152 ... слияние, но опция -m не указана.
Чарльз Бейли, как обычно, дал отличный ответ . Использование git revert
как в
$ git revert --no-edit -m 1 HEAD
[master e900aad] Вернуть "Объединить ветку 'otherguy'"
0 файлов изменено, 0 вставок (+), 0 удалений (-)
режим удаления 100644 бар
эффективно удаляет bar
и создает историю
$ git lola
* e900aad (HEAD, master) Возврат "Объединить ветку 'otherguy'"
* 2582152 Объединить ветку 'otherguy'
| \
| * c7256de (другой) бар
* | b7e7176 баз
| /
* 9968f79 foo
Но я подозреваю, что вы хотите выбросить коммит слияния:
$ git reset --hard HEAD ^
ГОЛОВА сейчас на b7e7176 баз
$ git lola
* b7e7176 (HEAD, master) баз
| * c7256de (другой) бар
| /
* 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
потому что это может разрушить работу.