Управление размером файла .git

Мой .git файл вырос до 229 МБ, и мне интересно, какой лучший способ сократить размер. Я знаю о git gc и использовал его в достаточной сумме. Я не совсем уверен, как работает git, но я знаю, что там есть упакованная информация, которую мне больше не нужно. Например, я знаю, что мне больше не нужны первые пять ветвей. Есть ли способ полностью стереть действительно старые ветки или коммиты или что-то в этом роде?

Ответ 1

Если вы хотите сохранить неизведанную историю совершения сделки (достижимой), затем истечь, переупаковать, обрезать и удалить мусор:

git reflog expire --expire=0 --all
git repack -ad
git prune 
git gc

Это должен быть минимальный размер, который вы можете получить в своем репо и сохранить историю фиксации.

Если нет, т.е. вы хотите или не возражаете начать заново с текущего состояния репо в качестве первоначального коммита, то подход Питера Тиллеманса сделает это.

Ответ 2

У вас есть несколько методов в Уменьшении размера хранилища git, но я также упоминаю в нем, что git gc самостоятельно может увеличить размер репо!

Таким образом, может понадобиться какая-то ветвь фильтра (также ссылка на этот вопрос), если никто не активно вытягивается из вашего репо.

Один из факторов, который имеет тенденцию к быстрому увеличению размера репо git, является версией слишком большого числа двоичных файлов. Это один из Git пределов, поэтому попробуйте:

  • версия такого большого объекта в своем собственном репозитории git, на который ссылаются как подмодули
  • или обновить их во внешнем репозитории, предназначенном для доставки, например, в репозитории Maven (т.е. не в репозитории git)

Ответ 3

Самый простой способ - сделать

git clone --depth 1 your_old_repo

в новом месте, а затем замените его на место.

см. также git faq

Ответ 4

Я бы немного собирал мусор с помощью git gc