Похоже, мой проект становится все больше и больше с каждым мерзавцем commit/push
. Есть ли способ очистить мою папку git?
156
Я не уверен, что вы хотите. Прежде всего, конечно, каждый раз, когда вы делаете коммит / push, каталог становится немного больше, так как он должен хранить каждый из этих дополнительных коммитов.
Однако, вероятно, вы захотите, git gc
который будет «очищать ненужные файлы и оптимизировать локальный репозиторий» ( страница руководства ).
Другая, возможно, релевантная команда, git clean
которая удалит неотслеживаемые файлы из вашего дерева ( страница руководства ).
WARNING
Команда, как написано выше @Kalle, удалит ВСЕ > ФАЙЛ И СПРАВОЧНИК В СВОЕМ GIT ROOT , а не только «файлы, перечисленные в .gitignore». Все, что не отслеживается Git, независимо от того, включено ли оно в список,.gitignore
будет удалено.git clean -dfX
(обратите внимание на регистр наX
) удалит только те элементы, для которых применимо правило.gitignore
. Пожалуйста, обратите внимание на это предупреждение: Никогда не запускайте его,git clean
не запуская его в интерактивном режиме,-i
вместо того-f
, чтобы , по крайней мере, сначала выполнить пробный прогон,-n
а затем снова с-f
.Бегать:
Удаляет все устаревшие ветви отслеживания, которые уже были удалены,
origin
но все еще доступны локально вremotes/origin
.' G arbage C ollection' - выполняет хозяйственные задачи (сжимает ревизии, удаляет незакрепленные / недоступные объекты).
--auto
Флаг первым определяет, требуется ли какая - либо работа, и выходит , не делая ничего , если нет.источник
Один из сценариев , где ваш мерзавец репо получит серьезно больше с каждой фиксации является один , где вы совершаете двоичные файлы , которые вы регулярно генерировать. Их хранение не будет таким же эффективным, как у текстового файла .
Другой - тот, где у вас есть огромное количество файлов в одном репо (что является пределом git ) вместо нескольких подпереговоров ( управляемых как подмодули ).
В этой статье о git space AlBlue упоминает:
Если в вашем git-репозитории хранятся большие двоичные файлы, вы можете рассмотреть следующие вопросы:
git filter-branch
(предупреждение: это перезапишет историю, что плохо, если вы уже открыли репо и другие извлекли из него)Как я уже говорил в « Каковы пределы файлов в Git (количество и размер)? », Тем более в последнее время (2015, через 5 лет после этого ответа) Git LFS из GitHub является способ управления этими большими файлами (сохраняя их вне Git репозиторий).
источник
да да
git gc
это решение, естественно,и локально - вы можете просто удалить локальный репозиторий и снова его клонировать,
но здесь есть нечто более важное ...
секунды, в течение которых вы ожидаете обработки этого огромного Git & Externals, превращаются в долгие минуты, которые собираются в часы неэффективного затраченного времени,
Создайте новый (полностью, а не просто ветвь) репозиторий с нуля , включая единственную последнюю версию файлов, естественно, вы потеряете всю историю,
но когда в мире кода не настало время сентиментальности, нет смысла тащить весь 5-летний код каждый коммит или разность, вы все равно можете хранить старые git & externals где-нибудь, если вы испытываете ностальгию:]
но в какой-то момент вы действительно должны двигаться дальше:]
ваша команда поблагодарит вас!
источник
Выполнение этой команды чрезвычайно опасно, но сократит ваш репозиторий, удалив все ваши файлы git recovery / backup:
Он удалит все файлы, которые использует git для восстановления вашего репозитория по какой-то неправильной команде, например, если вы это сделали
git reset --hard
, вы обычно можете восстановить потерянные файлы. Но если вы делаетеgit reset --hard
доgit reflog expire...
команды, то вы все потеряли. Теперь ваша единственная надежда - использовать какой-нибудь инструмент, который анализирует вашу файловую систему и пытается восстановить стертые файлы, если они не были переопределены.источник
git clean -d -f -i
это лучший способ сделать это.Это поможет сделать уборку более контролируемой.
-i
обозначает интерактивный.источник
git clean
не об очистке репо, а об очистке каталога. Для пользователей, которые слепо копируют / вставляют, будьте осторожны; это удаляет неотслеживаемые файлы / каталоги, которые вы могли бы на самом деле хотеть локально.Не знаю, уменьшит ли он это, но после запуска
git clean
я часто так и делаюgit repack -ad
, что уменьшает количество файлов пакета.источник
git gc
процесса, поэтому нет необходимости запускать ее отдельно