Git удалить root commit

Я не могу много чего делать с git, и я хочу удалить коммит из моего репо, потому что я загрузил неправильные вещи.

Я использовал git revert <the_commit>, но поскольку коммит является root, и я не могу его удалить. Неустранимый: Невозможно восстановить корневой коммит

Что делать в этом случае?

Пожалуйста, не дайте мне ссылки на другие темы здесь, я читаю их, и я не понимаю, что делать, мне нужен базовый пример удаления некоторого коммита.

12 голосов | спросил Alex Emilov 27 Maypm11 2011, 12:11:29

2 ответа


0

Чтобы удалить корневой коммит, вам просто нужно удалить все ветви (и теги), из которых он доступен.

Это можно сделать с помощью git branch -D branch-name. (Сначала вам нужно проверить другую ветку, которая не относится к этой корневой фиксации, так как я думаю, что вы не можете удалить текущую ветку.)

Если вы хотите сохранить другие коммиты в этой ветке и удалить только корень, лучше использовать git filter-branch, см. ответ Грега.

ответил Paŭlo Ebermann 27 Maypm11 2011, 13:12:09
0

Это можно сделать с помощью 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
$ 
ответил Greg Hewgill 27 Maypm11 2011, 12:58:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132