Git Checkout для ветки занимает много времени

Я использую Ubuntu 17.10 и использую git (версия 2.14.1). Всякий раз, когда я создаю ветку из master и пытаюсь оформить заказ на нее (или на master из нее), это занимает много времени, около нескольких минут, иногда около 10 минут. Правда, у меня есть несколько ГБ данных, но, насколько я понимаю, все данные на самом деле не копируются, а вместо этого сохраняются только изменения. В чем же может быть проблема?

2 ответа

Git 2.20 (Q4 2018) улучшит git checkout скорость:

" git checkout -b newbranch [HEAD] msgstr "не нужно делать столько, сколько нужно проверить коммит, отличный от HEAD.
Предпринята попытка оптимизировать этот особый случай.

Смотрите коммит fa655d8 (16 августа 2018 г.) Бен Пирта ( benpeart )
(Объединено Юнио С Хамано - gitster - в коммите 0faaf7e, 17 сентября 2018 г.)

checkout: оптимизировать git checkout -b <new_branch> "

Пропустите объединение коммитов, обновление индекса и рабочего каталога тогда и только тогда, когда мы создаем новую ветку через " git checkout -b <new_branch>. "
Любые другие варианты оформления заказа по-прежнему будут проходить по прежнему пути кода.

Если sparse_checkout включено, требует, чтобы пользователь вручную включил это оптимизированное поведение, установив параметр конфигурации checkout.optimizeNewBranch к истине, так как мы больше не будем обновлять skip-worktree бит в индексе, а также добавлять / удалять файлы в рабочем каталоге, чтобы отразить текущие настройки разреженного извлечения.

Для сравнения работает git checkout -b <new_branch> "На большой репо берется:

14.6 seconds - without this patch
0.3 seconds - with this patch

Ты должен бежать git gc помогает производительности.

git gcЦель двоякая: удаление незакрепленных объектов и упаковка объектов для более эффективного использования дискового пространства.

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

https://git-scm.com/docs/git-gc

Другие вопросы по тегам