Как удалить ошибочные комманды?
Через комедию ошибок noob я обнаруживаю себя в следующей ситуации в локальном репо:
Используя git reset
, я маневрировал теги ветвей туда, где я их хочу, и теперь я хотел бы удалить 3 коммита на том, что выглядит как неназванная ветвь. Я успешно изучил/пробовал различные вещи, включая gc
, prune
.
Я понимаю, что я мог просто сдуть местное репо и повторно клонировать его, однако я бы хотел использовать его как возможность обучения.
Итак, вопрос: как я могу удалить эти коммиты?
Ответы
Ответ 1
Вы просмотрели reflog
? Он отслеживает каждый способ, с помощью которого HEAD перемещается внутри вашего репозитория (и выполняет свою работу, предотвращая автоматическое удаление ваших коммитов).
Изучите его с помощью git reflog
или git log -g
. Удалите его с помощью git reflog expire --expire=now --all
, а затем вы можете мусор собирать неиспользуемые коммиты.
Ответ 2
jleedev answer, безусловно, их убьют, но я действительно не думаю, что вы должны это сделать.
Коммиты будут автоматически очищаться следующим gc (который запускается автоматически несколькими командами клавиш), когда они больше не находятся в reflog, срок действия которых истекает через 90 дней. То есть, они в конце концов исчезнут; git просто удерживая вас от удаления всего, что вы, возможно, не хотели.
Если вам просто нужно видеть их в gitk
, все, что вам нужно сделать, это перезагрузить представление (или перезапустить gitk). Теперь, когда эти коммиты не находятся на ветке, они не будут показаны. Да, они все равно будут в вашем репозитории, но если у вас не хватает дискового пространства, это не повредит вам. Это просто защитная сетка.