Скажите, что другой парень создал панель поверх 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
Но я подозреваю, что вы хотите выбросить слияние:
$ git reset --hard HEAD^ HEAD is now at b7e7176 baz $ git lola * b7e7176 (HEAD, master) baz | * c7256de (otherguy) bar |/ * 9968f79 foo
Как описано в руководстве git rev-parse
blockquote>
, например HEAD ^,
^ v1.5.1^0
Суффикс^
к параметру ревизии означает первый родитель этого объекта commit.^
означает n -го родителя ( i.e.эквивалентно
^ ). В качестве специального правила
^1 означает сам commit и используется, когда
^0 является именем объекта тега, который ссылается на объект фиксации.
, поэтому перед вызовом
git reset
,HEAD^
(илиHEAD^1
) был b7e7176, аHEAD^2
был c7256de, , т.е. , соответственно первый и второй родители слияния.Будьте осторожны с
git reset --hard
, потому что он может уничтожить работу.