Есть ли способ очистить git?

Похоже, мой проект становится все больше и больше с каждым git commit/push. Есть ли способ очистить папку git?

Ответ 1

Я не уверен, чего ты хочешь. Прежде всего, конечно, каждый раз, когда вы совершаете/толкаете, каталог будет немного больше, так как он должен хранить каждую из этих дополнительных коммитов.

Однако, возможно, вы хотите git gc, который будет "очищать ненужные файлы и оптимизировать локальный репозиторий" (страница руководства).

Другой возможной командой является git clean, которая будет удалять необработанные файлы с вашего дерева (

Ответ 2

Запуск:

git remote prune origin

Удаляет все ветки отслеживания, которые уже были удалены в origin, но все еще доступны локально в remotes/origin.

git gc --auto

' G arbage C ollection' - выполняет домашние задания (сжимает ревизии, удаляет свободные/недоступные объекты). Флаг --auto сначала определяет, требуется ли какая-либо работа, и выходит, не делая ничего, если нет.

Ответ 3

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

Другим является тот, где у вас есть огромное количество файлов в пределах одного репо (который является предел git) вместо нескольких подпоров (управляются как подмодули).

В этой статье на git пространстве, AlBlue упоминает:

Обратите внимание, что git (и Hg и другие DVCS) действительно страдают от проблемы, когда (большие) двоичные файлы проверяются, а затем удаляются, поскольку они все равно будут отображаться в репозитории и занимать место, даже если они не текущие.

Если у вас есть большие двоичные файлы, хранящиеся в вашем репозитории git, вы можете подумать:

Ответ 4

да да, git gc - это решение, естественно,

и локально - вы можете просто удалить локальный репозиторий и снова клонировать его,

, но здесь есть что-то более важное...

секунды, в течение которых вы ожидаете, что огромные git и внешние процессы будут обработаны, будут собраны до длинных минут, в которые собираются часы с неэффективным временем,

Создайте новый (полностью, а не только филиал) репозиторий с нуля, включая только последнюю версию файлов, естественно, вы потеряете всю историю,

но когда в коде-мире не время для сентиментальности, нет смысла перетаскивать по всем 5 годам кода каждый фиксатор или diff, вы все равно можете хранить старый git и externals где-нибудь, если вы получаете ностальгию:]

но в какой-то момент вам действительно нужно двигаться вперед:]

Ваша команда поблагодарит вас!

Ответ 5

git clean -d -f -i - лучший способ сделать это.

Это поможет очистить более контролируемым образом.

-i означает интерактивность.

Ответ 6

Выполнение этой команды чрезвычайно опасно, но сжимает ваш репозиторий, удаляя все ваши файлы восстановления/резервного копирования git:

git reflog expire --expire=now --all && git gc --prune=now --aggressive

Он удалит все файлы, используемые git для восстановления вашего репозитория из какой-либо плохой команды, например, если вы git reset --hard, вы можете обычно восстановить потерянные файлы. Но если вы git reset --hard до того, как команда git reflog expire..., вы потеряли все. Теперь вам остается только использовать какой-либо инструмент, который анализирует вашу файловую систему и пытается восстановить стертые файлы, если они не будут переопределены.

Ответ 7

Не знаю, будет ли это сокращаться, но после запуска git clean я часто делаю "git repack -ad", что уменьшает количество файлов пакетов.