Как удалить коммит в git, у которого нет указанной ветки? - PullRequest
3 голосов
/ 11 августа 2010

У меня следующая структура git-репо:

a-b-c-d-.. [master]
    \
     x

Фиксированный х был выполнен случайно (не могу понять, как) и не имеет именованной ветви.Как я могу удалить этот коммит?

Для подробностей, git log показывает это (переведено с немецкого языка, извините за любые неудобства):

Author: ...
Parents: 8444..
Branch:
Follows up:
Preceding:

...

Коммит не был удален с помощью git prune.

Ответы [ 3 ]

4 голосов
/ 11 августа 2010

Если x отсутствует в истории какой-либо ветви и не извлечен, он будет автоматически удален git рано или поздно. Вы можете посмотреть на git help gc, если хотите сразу удалить. Установка gc.reflogExpireUnreachable на ноль и затем выполнение git gc --prune=now, вероятно, добьются цели.

git rebase, git commit --amend и другие подобные команды постоянно оставляют такие остатки; git обычно достаточно приличен в обращении с ними, так что вам не нужно об этом беспокоиться.

2 голосов
/ 12 августа 2010

git prune будет делать то, что вы хотите, но удалит все недоступные объекты, а не только конкретный.

0 голосов
/ 11 августа 2010

Беги git gc агрессивно. Может занять время.

git gc --aggressive

Подробнее о git gc здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...