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