Msysgit Bash ужасно медленно в Windows 7 - PullRequest
82 голосов
/ 14 мая 2010

Я люблю git и использую его на OS X почти постоянно дома. На работе мы используем svn в Windows, но хотим перейти на git, как только инструменты полностью созреют (не только TortoiseGit , но и что-то похожее на действительно хорошую интеграцию Visual Studio, обеспечиваемую VisualSVN ). Но я отвлекся ...

Я недавно установил msysgit на мой компьютер с Windows 7, и при использовании включенной версии bash он ужасно медленный. И не только операции с git; clear занимает около пяти секунд . Aaaah!

Кто-нибудь сталкивался с подобной проблемой?


Редактировать : появляется , что msysgit не очень хорошо работает с UAC и может быть просто крошечным упущением в дизайне, возникающим в результате разработки на XP или под управлением Vista или 7 с отключенным UAC; запуск Git Bash с использованием Run as administrator приводит к молниеносной скорости, которую я вижу с OS X (или 7 после запуска Git Bash без сетевого подключения - см. ответ @Gauthier).

Редактировать 2 : АХ ГА! Смотри мой ответ.

Ответы [ 19 ]

53 голосов
/ 04 июня 2014

Вы можете значительно ускорить Git в Windows, запустив три команды для установки некоторых параметров конфигурации:

git config --global core.preloadindex true
git config --global core.fscache true
git config --global gc.auto 256

Примечания:

  • core.preloadindex выполняет операции файловой системы параллельно, чтобы скрыть задержку (обновление: включено в git 2.1 по умолчанию)

  • core.fscache исправляет проблемы с UAC, поэтому вам не нужно запускать Git от имени администратора (обновление: включено в Git для Windows 2.8 по умолчанию)

  • gc.auto минимизирует количество файлов в .git /

36 голосов
/ 03 июня 2010

Решением для медлительности в Vista или 7 является запуск Git Bash с использованием Run as administrator (или отключение UAC для ярлыка Git Bash ... или полное отключение UAC ). Разница между днем ​​и ночью, и использование git на 7 снова удивительно.

Похоже, это связано с известной проблемой , и, как я предположил, XP как среда разработки для msysgit частично ответственна.

13 голосов
/ 17 февраля 2011

Для меня проблема заключалась в использовании __git_ps1 в командной строке - думаю, из-за медленного доступа к диску в msysgit.

Решением было удаление $ (__ git_ps1) из строк PS1 = ... в / etc / profile

быстрый тест, если это решение применимо: в git shell наберите экспорт PS1 = '$' и проверьте скорость ваших операций.

12 голосов
/ 07 февраля 2012

Перепробовал почти все советы здесь (включая один из моего другого ответа) на новой машине, но они не работали, Git все еще медленный, как ад.

Затем я взглянул на программу сканирования вирусов (которая была предварительно установлена): я отключил сканирование в режиме реального времени McAfee Security Center и сказал: git сейчас горит быстро! Время, необходимое для "git svn rebase", уменьшилось с 30 до 5 с (!).

Я надеюсь, что это полезно для других людей, у которых по-прежнему возникают проблемы с медленным Git в Windows, я потратил часы на то, чтобы понять это.

9 голосов
/ 06 января 2012

Увы, «Запуск от имени администратора» не работал для меня, но, как обнаружил Кевин Л., отключил сетевой адаптер, запустил git bash, а затем снова подключился. Поэтому я обернул это в пакетный скрипт и поместил ярлык для него в меню «Пуск», помеченный для запуска от имени администратора:

netsh interface set interface "Local Area Connection" DISABLED
cd "%USERPROFILE%\Documents\Visual Studio 2010\Projects"
start cmd /c ""C:\Program Files\Git\bin\sh.exe" --login -i"
netsh interface set interface "Local Area Connection" ENABLED

Работает, пока я помню, что моя сеть на мгновение отключается.

(Win 7 Professional SP1, Git версия 1.7.8-preview20111206)

5 голосов
/ 18 мая 2010

Мой коллега имел такое поведение всякий раз, когда Outlook работал. Попытка уничтожить внешний вид и протестировать снова.

Вы также можете попробовать проверить:

  • без подключения к какой-либо сети,
  • без запуска антивируса,
  • без запуска других программ.
3 голосов
/ 25 октября 2012

Мы обнаружили, что при работе с определенными учетными записями пользователей отдельные экземпляры git.exe блокируются при вызове WaitForSingleObject(), поэтому эффективно может выполняться только одна операция git.exe. Смена учетной записи пользователя обошла эту проблему.

Подробности здесь: https://stackoverflow.com/a/13054022

3 голосов
/ 20 марта 2013

У меня есть MacAffee, и я говорю ему об исключении каталога .git и всех подкаталогов из сканирования в реальном времени, что решает проблему производительности.

1 голос
/ 29 января 2015

Я только что некоторое время устранял эту проблему и с трудом определял источник проблемы. В конце концов я обнаружил две вещи, которые оказали драматическое влияние:

  • Отключение службы поиска Windows. Это оказало драматическое влияние на производительность.
  • Закрытие Git Extensions. Открытое в фоновом режиме окно просмотра расширений Git приводило к увеличению времени выполнения команды git Cygwin на случайную величину, примерно до 10.
1 голос
/ 14 февраля 2013

Если отключение UAC не улучшает производительность, попробуйте отключить драйвер luafv. Это сработало для меня после того, как я попробовал почти все на этой странице и пару похожих вопросов. Git превратился из необычайно медленного в довольно приличного.

Откройте «regedit» и найдите раздел реестра

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

Измените значение Start с 2 на 4.

Я нашел подробности о том, как отключить luafv здесь . Обратите внимание, что я лично понятия не имею, что такое luafv. На этой странице содержатся различные предупреждения о плохих вещах, которые могут произойти, если вы отключите его, что, вероятно, следует воспринимать всерьез.

РЕДАКТИРОВАТЬ: Комментарий ниже указал, что я понял это неправильно (ссылка имеет правильное направление). Это исправлено сейчас. Извините людей, чьи реестры я разгромил:)

...