Вопрос по commit, git-rebase, branch, git, git-branch – Удалить ссылку без ссылки из репозитория git

6

У меня есть история Git коммитов, как это:

          U
         / 
A---B---C---D---E master

Ничто не указывает на коммитUНо я знаю его хэш. Как я могу полностью удалить этот коммит из своего репозитория, как если бы он никогда не существовал? Я'м единственный человек, использующий этот репо.

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

Если я сделаюgit checkout  а потомgit reset --hard HEAD~1 Я небольше не вижу коммита. Это на самом деле полностью или все еще скрыто в репо?

Ваш Ответ

2   ответа
3

мерзавецgc на самом деле заставить сборщик мусора.

clean команда отличается и выигралЯ позабочусь об этом за тебя.

@Jawap: нет, они не будут клонированы Chronial
Что если я клонирую весь репо? Будут ли клонированные объекты мусора, на которые нет ссылок, также клонироваться? Jawap
7

Как описаноВот, просто используйте

git reflog expire --expire-unreachable=now --all
git gc --prune=now

git reflog expire --expire-unreachable=now --all удаляет все ссылки на недоступные коммиты в.reflog

git gc --prune=now удаляет коммиты сами.

Внимание: Только с помощьюgit gc --prune=now не будет работать, так как на эти коммиты все еще ссылаются в reflog. Поэтому очистка рефлога является обязательной.

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