Git удалить root commit
Я не могу делать много вещей с помощью git, и я хочу удалить фиксацию из своего репо, потому что я загрузил неправильные вещи.
Я использовал git revert <the_commit>
, но поскольку commit является root, и я не могу его удалить.
fatal: не удается вернуть корневую фиксацию
Что делать в этом случае?
Пожалуйста, не дайте мне ссылки на другие темы здесь, я прочитал их, и я не понимаю, что делать, мне нужен какой-то базовый пример об удалении некоторой фиксации.
Ответы
Ответ 1
Для удаления корневого коммита вам просто нужно удалить все ветки (и теги), из которых оно доступно.
Это можно сделать с помощью git branch -D branch-name
. (Вы должны сначала проверить другую ветвь, которая не относится к этому корневому фиксации, так как вы не можете удалить текущую ветку, я думаю.)
Если вы хотите сохранить другие коммиты на этой ветке и удалить только корень, git filter-branch
лучше, см. ответ от Грега.
Ответ 2
Вы можете сделать это, используя git filter-branch. Сначала определите идентификатор фиксации в корне, который вы хотите удалить. Я буду представлять это с помощью <the_commit>
. Затем запустите git filter-branch
с помощью команды --parent-filter
и sed
, которая отключит этого родителя:
git filter-branch --parent-filter "sed 's/-p <the_commit>//'" HEAD
Вот сценарий примера, который я только что пробовал:
$ git log
commit 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8
Author: Greg Hewgill <[email protected]>
Date: Fri May 27 20:54:27 2011 +1200
three
commit a8a410d2361824cbd518a48225e9402a691be93f
Author: Greg Hewgill <[email protected]>
Date: Fri May 27 20:54:17 2011 +1200
two
commit 3171d512d98f6bc5f3c2469312930c0d32d3aa07
Author: Greg Hewgill <[email protected]>
Date: Fri May 27 20:54:00 2011 +1200
one
$ git filter-branch --parent-filter "sed 's/-p 3171d512d98f6bc5f3c2469312930c0d32d3aa07//'" HEAD
Rewrite 7e1ba37b51fc2cc6289cf66367c9aedc74c664a8 (3/3)
Ref 'refs/heads/master' was rewritten
$ git log
commit 489ec1ee20e0dd20cd835ceebf157f628cd75a44
Author: Greg Hewgill <[email protected]>
Date: Fri May 27 20:54:27 2011 +1200
three
commit a6f5ee410c9ea4fca6fbff265149b7fc555241eb
Author: Greg Hewgill <[email protected]>
Date: Fri May 27 20:54:17 2011 +1200
two
$