@Sazoks

Что делать, если удалил ветку без удаления коммита?

Была ветка, которую нужно было удалить. Там было несколько коммитов больших.
Я, по незнанию, удалил эту ветку, но размер репозитория в байтах не уменьшился, тогда-то и смекнул я, что потерпел фиаско.
Теперь надо как-то удалить эти данные.
Ну и если кто-то не понял, это произошло потому, что я удалил ветку, но не сам коммит, фиксирующий данные.
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
vaut
@vaut
Вам необходимо принудительно запустить сборку мусора:
$ git gc --auto
Недостижимые объекты будут удалены.
Подробнее:
https://git-scm.com/book/ru/v2/Git-%D0%B8%D0%B7%D0...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
romesses
@romesses
Backend инженер
Во-первых, удаление веток, меток и фиксаций (commits) не приводит к сокращению размера репозитория, т.к. git работает только на добавление.
Во-вторых, если изменения уже синхронизированы на удаленный репозиторий git, тогда с этим нужно просто жить.

И только если изменения локальны и не выполнен git push, тогда ветку откатить можно до нужной фиксации.

Допустим, ветка origin/development находится на удаленном репозиторие git, а локально были добавлены 2 фиксации с ненужными изменениями (бинарями dll, допустим). Таким образом, ветка development опережает origin/development на 2 фиксации. Тогда выполняем:
git reset --hard origin/development

Добавлено:
Есть еще деструктивная утилита bfg для удаления данных из истории git:
https://rtyley.github.io/bfg-repo-cleaner/
https://www.phase2technology.com/blog/removing-lar...
Если изменения только локальные, то можно поработать с этой утилитой локально и тогда на удаленный репозиторий git ничего из ненужного не попадет.
А если уже попали, тогда есть еще более опасная вещь: попытаться перевоссоздать репозиторий локально и перезалить его.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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