Можно ли очистить 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.