Я использую git
для управления файлами в локальном каталоге на машине с Windows - здесь не задействована сеть, я не нажимаю и не перетаскиваю на / с другой машины. В моем каталоге около 100 файлов, все тестовые файлы довольно маленькие. Когда я бегаю git status
, это обычно занимает 20-30 секунд. Это нормально? Могу ли я что-нибудь сделать, чтобы ускорить его, или лучший способ узнать, в каком состоянии находится мой репозиторий (измененные файлы, неотслеживаемые файлы и т. Д.)? Другие git
команды, кажется, выполняются намного быстрее.
85
Ответы:
Вы пробовали git gc ? Это убирает мусор из репозитория git.
источник
git status
помощьюtime
команды и получил «реальное» время 30.464s. Затем я побежалgit gc
потомtime git status
еще раз и получил реальное время 35.409s. Довольно странно.git status
несколько раз подряд последующие запуски занимают лишь долю от первого. Таким образом, если вы работаетеgit status
, а затем ,git gc
а затемgit status
снова, он , как ожидается , он будет работать очень быстро.По аналогичной проблеме я обнаружил, что наличие репозитория git в каталоге под моим существующим репозиторием git вызывает значительное замедление.
Я переместил вторичный репозиторий git в другое место, и теперь скорость высокая!
источник
Вы используете какое-то программное обеспечение для защиты от вирусов? Может быть, это что-то мешает.
git
для меня очень быстро работает на Windows с репозиториями из тысяч файлов.источник
Пробовали перепаковывать? git-repack .
В противном случае попробуйте продублировать каталог и удалить папку .git в дублированном каталоге. Затем создайте новый каталог git и посмотрите, все ли работает медленно.
Если он все еще медленный, то это похоже на проблему с системой или оборудованием. Git завершает за меня статус сотен файлов менее чем за 5 секунд.
источник
По какой-то причине
git status
работает особенно медленно после перемещения или копирования папки репозитория в новое место.Последующие запуски в этом случае обычно проходят быстрее.
источник
git status
команда, поэтому, вероятно, для завершения потребуется такое же количество времени.Мой
git status
был очень медленным (до одной минуты), потому что глобальный.gitignore
файл находился в моем профиле пользователя Windows, который хранился в недоступном сетевом ресурсе.git config --global core.excludesfile
показал что-то вроде
\\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
По какой-то причине
\\Nxxxx0
был недоступен, и мой профиль пользователя был загружен из системы резервного копирования\\Nxxxxx1
. Чтобы понять это, потребовалось некоторое время, потому что обычно мой пользовательский профиль привязан к букве диска с помощью сценария запуска предприятия, и доступ к этой букве диска работал как обычно. Я не уверен, почему git-config использовал общий сетевой ресурс, а не букву диска (вероятно, виноват я младший)После настройки
git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
вернулся к нормальной скорости.источник
git fsck
Раньше бег решал эту проблему для меня.источник
Для меня медлительность была связана с наличием большого количества неотслеживаемых файлов (временных и выходных файлов из сценариев). Запуск
git status -uno
, который исключает неотслеживаемые файлы, работает намного быстрее и соответствует моим требованиям.источник
Проблема для меня заключалась в том, что у меня было много разных репозиториев, клонированных на мой локальный жесткий диск, и чем больше у вас репозиториев, тем больше времени потребуется для выполнения таких команд, как git status.
Я просто удалил множество репозиториев, которые мне больше не нужны локально, и мой статус git увеличился с 1 минуты до 5 секунд.
Я не вижу здесь ответов, подобных этому.
источник
git status
каким-либо образом повлиять на стандарт, который вы используете в одном каталоге. Если ваши репозитории зарегистрированы в разных каталогах, вы можете запускать толькоgit status
один из них за раз. Другое дело, если ваши репозитории git перекрываются, но в любом случае это плохая идея.Еще один аспект,
git status
который будет улучшен (в Git 2.14.x / 2.15, Q4 2017), - это отображение игнорируемых файлов (git status --ignored
)См. Commit 5aaa7fd (18 сентября 2017 г.) Джеймсон Миллер (
jamill
) .(Объединено Junio C Hamano -
gitster
- в коммите 075bc9c , 29 сентября 2017 г.)Дополнительные улучшения (установленные в Git 2.17, Q2 2018) см. В этом ответе .
источник
node_modules
это изменение производительности может повлиять на него. Просто возможно.Более старые версии git имеют проблемы с производительностью с git status - дополнительные сведения см. В разделе Способы повышения производительности git status .
В git 2.13 есть одно исправление и еще 2.17. Я перешел с 2.7 на 2.23, и это разрешило медленный статус. В ближайшее время планируется еще одно улучшение для версии 2.24.
источник
В моем случае медлительность была вызвана тем, что я работал
git status
под другим пользователем, а не владельцем файлов в проекте.Хотя это применимо не во всех случаях, простое
chown
решение для текущего пользователя может помочь.источник
Попробуйте начать со свежего клона вашей кассы.
а затем выполните git status в mynewrepo.
В качестве альтернативы, и если вы смелее, вычистите мусор со своей существующей кассы.
Это избавляет git от необходимости сканировать некоторые (возможно, большие) наборы игнорируемых или незарегистрированных файлов.
источник