Сжатие истории репозитория GIt

Удаленные серверы Git, как правило, накладывают ограничения на размер репозитория. И со временем возникает необходимость очистки истории от коммитов с большими файлами.

По материалам статьи на сервисе Bitbucket

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

Перед манипуляциями рекомендуется сделать копию репозитория

$ git clone --mirror git://example.com/some-big-repo.git

И после установки java-runtime можно начинать

Я переписал скрипт bfg.jar в каталог репозитория и выполнил команду

java -jar bfg.jar --strip-blobs-bigger-than 100M .

Точка сообщает скрипту, что репозиторий находится в текущем каталоге

Кроме всего прочего скрипт выдал следующую информацию о найденных и удаленных из истории файлах:

Deleted files ————- Filename Git id ————————————————— arduino-1.8.10-windows.zip | 645824b8 (198,0 MB) arduino-1.8.8.zip | 2143574c (179,0 MB) arduino-1.8.9-linux32.tar.xz | 36b63692 (118,4 MB)

Однако, скрипт не удаляет эти данные из истории физически, чтобы перестроить индексы git и «собрать мусор», нужно выполнить в консоли git:

$ cd <каталог репозитория>
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive

И затем:

$ git push --all --force

для отправки произведенных изменений на сервис Git

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *