Скажем, другой парень создал панель поверх 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потому что это может разрушить работу.