7 ответов:
Я не уверен, что вы хотите. Прежде всего, конечно, каждый раз, когда вы совершаете/нажимаете каталог, он будет немного больше, так как он должен хранить каждую из этих дополнительных коммитов.
однако, вероятно, вы хотите
git gcчто позволит "очистить ненужные файлы и оптимизировать локальный репозиторий" (страница руководства).другая, возможно, соответствующая команда
git cleanчто будет удалить неотслеживаемые файлы из вашего дерева (руководство страница).
Run:
git remote prune originудаляет все устаревшие ветви отслеживания, которые уже были удалены в
originно все еще локально доступны вremotes/origin.git gc --auto'G arbage C ollection ' - запускает задачи по ведению домашнего хозяйства (сжимает ревизии, удаляет свободные/недоступные объекты). Элемент
--autoфлаг сначала определяет, требуется ли какая-либо работа, и выходит, ничего не делая, если нет.
один сценарий, где ваш git РЕПО получит серьезно больше с каждой фиксации является тот, где вы фиксируете двоичные файлы, которые вы генерируете регулярно. их хранение не будет столь же эффективным, как текстовый файл.
еще одно, где у вас есть огромное количество файлов внутри один РЕПО (который является предел git) вместо нескольких subrepos (управлял как подмодули).
в этом статья о git space, Аллю упоминает:
обратите внимание, что Git (и Hg, и другие DVCSs) страдают от проблемы, когда (большие) двоичные файлы регистрируются, а затем удаляются, поскольку они все равно будут отображаться в репозитории и занимать место, даже если они не являются текущими.
Если в вашем репозитории git хранятся большие двоичные файлы, вы можете рассмотреть:
- управление этими двоичными файлами в внешний репозиторий.
- управление .в Git РЕПО размере
- попробуйте удалить эти файлы из вашей истории С
git filter-branch(предупреждение: это перепишет историю, что плохо, если вы уже нажали свое РЕПО и если другие вытащили из него)
да да
git gcЭто решение, естественно,и локально-вы можете просто удалить локальный репозиторий и клонировать его снова,
но есть нечто более важное...
секунды, которые вы ждете, что огромный git & externals для обработки собираются в долгие минуты, в которых собираются часы неэффективного времени,
создать новый (целиком, а не только ветка) хранилище от царапины, включая только последнюю версию файлов,естественно вы потеряете всю историю,
но когда в мире кода не время становиться сентиментальным, нет смысла тащить все 5 лет кода каждый коммит или diff, вы все еще можете хранить старые git & externals где-то, если вы ностальгируете :]
но, в какой-то момент вы действительно должны двигаться вместе :]
ваша команда будет вам благодарна!
git clean -d -f -iЭто лучший способ, чтобы сделать это.Это поможет очистить в более контролируемом образе.
-iозначает интерактивный.
Не знаю, будет ли он сжиматься, но после запуска git clean я часто делаю "git repack-ad", что уменьшает количество файлов пакета.
выполнение этой команды чрезвычайно опасно, но сократит ваш репозиторий, удалив все git ваши файлы восстановления / резервного копирования:
git reflog expire --expire=now --all && git gc --prune=now --aggressiveон удалит все файлы, которые git использует для восстановления вашего репозитория из какой-либо плохой команды, например, если вы сделали
git reset --hard, вы обычно можете восстановить потерянные файлы. Но если вы это сделаетеgit reset --hardдо , то вы потеряли все. Теперь ваша единственная надежда-использовать какой-то инструмент, который анализирует вашу файловую систему и пытается восстановить стертое файлы, если они не были перезаписаны.
Comments