Newto
@Newto

Как почистить каталог .git от ненужных файлов?

Ситуация следующая. Некогда были закоммичены в гит ненужные файлы, которые весили, в общем количестве, около полугига. Далее эти файлы удалили из индекса с помощью добавления в gitingnore. Однако, хоть эти файлы и перестали пулиться/пушится в репозиторий, но папка .git сохранила историю их присутствия и теперь весит эти самые полгига с небольшим плюсом от остальных, нужных файлов.

В результате получается папка .git в пол гига и остальные файлы в несколько мегабайт, промаркерованные как проиндексированные.

Вопрос: как папку .git привести к актуальному состоянию проекта? Без методов "рубки с плеча" с новой инициализацией репозитория.
  • Вопрос задан
  • 264 просмотра
Решения вопроса 1
sergey-kuznetsov
@sergey-kuznetsov Куратор тега Git
Автоматизатор
Файл .gitignore не предназначен для удаления файлов из репо, он лишь помогает не добавить случайно лишнее в репо. А если уже закоммитили, то игнор не поможет.

Самый надёжный способ вычистить репозиторий от файла — использовать скрипт filter-repo
# клонируем репозиторий в соседний каталог
# иначе придётся использовать ключ --force
git clone --no-local . ../clonerepo/
# переходим в свежий клон
cd ../clonerepo
# чистим
git filter-repo --path "path/to/file" --invert-paths
# проверим что файл исчез
git log --oneline --name-status -- "path/to/file"
Коммиты в гите неизменяемые, но мы можем их пересоздать заново. Фактически получится новый репозиторий, но сохранится история. Всем участникам проекта придётся клонировать новый проект заново.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы