Как часто вы должны использовать git-gc?
Страница руководства просто говорит:
Пользователям рекомендуется запускать эту задачу на регулярной основе в каждом хранилище, чтобы поддерживать хорошее использование дискового пространства и хорошую производительность.
Существуют ли какие-то команды для подсчета количества объектов, чтобы узнать, пришло ли время для gc?
gc.autodetach
(Git 2.0 Q2 2014) может помочь запуститьgit gc --auto
без блокировки пользователя. см. мой ответ ниже .Ответы:
Это зависит главным образом от того, сколько используется хранилище. Когда один пользователь проверяет один раз в день, а разветвление / слияние / и т. Д. Раз в неделю, вам, вероятно, не нужно запускать его чаще, чем раз в год.
Поскольку несколько десятков разработчиков работают над несколькими десятками проектов, каждый из которых проверяет данные 2-3 раза в день, вы можете запускать его по ночам.
Впрочем, запускать его чаще, чем нужно, не помешает.
Что бы я сделал, это запустил бы его сейчас, затем через неделю проведите измерение использования диска, запустите его снова и снова измерьте использование диска. Если размер падает на 5%, запускайте его раз в неделю. Если он падает больше, то запускайте его чаще. Если он падает меньше, запускайте его реже.
источник
Обратите внимание, что недостатком сбора мусора в вашем хранилище является то, что мусор собирается. Как все мы знаем как пользователи компьютеров, файлы, которые мы считаем мусором сейчас, могут оказаться очень ценными через три дня в будущем. Тот факт, что git хранит большую часть своего мусора вокруг, несколько раз спасал мой бекон - просматривая все висячие коммиты, я нашел много работы, которую я случайно консервировал.
Так что не будьте аккуратным уродом в своих личных клонах. В этом нет особой необходимости.
OTOH, ценность восстанавливаемости данных сомнительна для репозиториев, используемых в основном как удаленные, например. место, куда все разработчики подталкивают и / или вытягивают. Там может быть целесообразно часто запускать GC и перепаковывать.
источник
git gc --help
, В частности,--prune
опция). Также есть упоминание о томgc.reflogExpire
, что я полагаю, что любой коммит, который вы посетили за последние 90 дней, не будет собран. (Моя версия git: v1.7.6)Последние версии git запускают gc автоматически при необходимости, поэтому вам не нужно ничего делать. Смотрите раздел Опции man git-gc (1) : «Некоторые команды git запускают git gc --auto после выполнения операций, которые могут создать много свободных объектов».
источник
gc --auto
, я думаю.Если вы используете Git-Gui , он говорит вам, когда вам следует беспокоиться:
Следующая команда выведет похожее число:
За исключением того, что из своего источника , git-gui сам выполняет математику, фактически подсчитывает что-то в
.git/objects
папке и, вероятно, дает приблизительное значение (я не знаю,tcl
как правильно это прочитать!).В любом случае, кажется, выдает предупреждение на основе произвольного числа около 300 незакрепленных предметов.
источник
Git-Gui
и другоеcount-objects
не совсем хорошие ответы на вопрос здесь ... Но они должны быть!Оставьте это в работе cron, которая выполняется каждую ночь (днем?), Когда вы спите.
источник
Я использую git gc после большой проверки и у меня много нового объекта. это может сэкономить место. Например, если вы извлекаете большой проект SVN с помощью git-svn и выполняете git gc, вы обычно экономите много места
источник
Вы можете сделать это без перерыва, с новой настройкой (Git 2.0 Q2 2014)
gc.autodetach
.Смотрите коммит 4c4ac4d и коммит 9f673f9 ( Nguy Thn Thái Ngọc Duy, он же pclouds ):
Начиная с этого релиза 2.0, была ошибка: git 2.7 (4 квартал 2015 года) не потеряет сообщение об ошибке .
См. Коммит 329e6e8 (19 сентября 2015 г.) Нгуена Тхаи Нгука Дуй (
pclouds
) .(Слиты Junio C Hamano -
gitster
- в фиксации 076c827 , 15 окт 2015)источник
Эта цитата взята из; Контроль версий с помощью Git
источник
git commit --amend
). Это можно проверить с помощьюgit log --reflog
. Я вставил ветку в удаленный репозиторий и снова проверил свое дерево; недоступные коммиты все еще были там. Видимо,git gc
не было запущено, когда произошел этот толчок. ...?Я использую, когда я делаю большой коммит, прежде всего, когда я удаляю больше файлов из репозитория .. после, коммиты быстрее
источник
Вам не нужно использовать
git gc
очень часто, потому чтоgit gc
(сборка мусора) запускается автоматически по нескольким часто используемым командам:Источник: лучшие практики git gc и часто задаваемые вопросы
источник