Задать вопрос
Newto
@Newto

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

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

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

Вопрос: как папку .git привести к актуальному состоянию проекта? Без методов "рубки с плеча" с новой инициализацией репозитория.
  • Вопрос задан
  • 435 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • ProductStar
    Python + Flask + Git: веб-разработка с нуля
    2 месяца
    Далее
  • Учебный центр IBS
    DEV-007 Введение в систему контроля версий Git
    1 неделя
    Далее
  • Stepik
    Git (система контроля версий)
    1 неделя
    Далее
Решения вопроса 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"
Коммиты в гите неизменяемые, но мы можем их пересоздать заново. Фактически получится новый репозиторий, но сохранится история. Всем участникам проекта придётся клонировать новый проект заново.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
Made In Dream Санкт-Петербург
от 100 000 до 220 000 ₽
от 250 000 до 320 000 ₽