Можно ли очистить git вход в систему .git, когда он становится большим
Мне очень не нравится иметь монстру .git-папку (2 ГБ), и я не забочусь об изменениях в 2002 году, и я не хочу создавать новый репозиторий, поэтому что мне делать, чтобы очистить .git/log?
Обратите внимание, что я хочу, чтобы он был не локальным, в следующий раз я хочу клонировать репозиторий без истории или истории с 2011 года.
Благодарю вас
Ответы
Ответ 1
Из вашего вопроса, я думаю, вам нужно что-то вроде этого.
git -rebase (1) делает именно это.
$ git rebase -i HEAD~5
git awsome-ness содержит пример.
- Не использовать
git-rebase
для публичных (удаленных) коммитов. - Убедитесь, что ваш рабочий каталог чист (
commit
или stash
ваши текущие изменения). - Выполните приведенную выше команду. Он запускает ваш
$EDITOR
. - Замените
pick
до C
и D
на squash
. Он объединит C и D в B. Если вы хотите удалить фиксацию, просто удалите ее строку.
Если вы потеряли, введите:
$ git rebase --abort
Однако, чтобы безопасно копировать папку .git, это не рекомендуется. Вы можете попробовать следующее, упомянутое в комментарий от Linus.
git repack -a -d --depth=250 --window=250
где эта глубина заключается в том, насколько глубокими могут быть дельтовые цепочки (сделать их более длинными для старой истории - это стоит пространства над головой), а окошка - о том, как большое окно объекта мы хотим, чтобы каждый дельта-кандидат сканировал.
Ответ 2
Запустите git gc --help, чтобы получить документацию.
В вашем случае git gc --aggressive --prune будет хорошо.
Ответ 3
Возможно, вы можете попробовать:
$ git gc --auto
На странице человека написано:
Выполняет ряд домашних задач в текущем репозитории, таких как сжатие изменений файлов (для уменьшения дискового пространства и увеличения производительности) и удаления недостижимых объектов, которые могли быть созданы из предыдущих вызовов git add.
Пользователям рекомендуется регулярно запускать эту задачу в каждом репозитории, чтобы поддерживать хорошее использование дискового пространства и хорошую производительность.
Это просто предложение, мне никогда не нужно использовать gc.