Msysgit bash는 Windows 7에서 끔찍하게 느립니다.


84

나는 git을 좋아하고 집에서 거의 지속적으로 OS X에서 사용합니다. 직장에서 우리는 Windows에서 svn을 사용하지만 도구가 완전히 성숙하자마자 git로 마이그레이션하고 싶습니다 ( TortoiseGit 뿐만 아니라 VisualSVN에서 제공하는 정말 멋진 Visual Studio 통합과 유사한 것 ). 하지만 나는 빗나 갔다 ...

나는 최근에 설치 msysgit을 내 윈도우 7 컴퓨터에, 그리고 배쉬의 포함 된 버전을 사용하는 경우, 그것은이다 끔찍하게 느린. 그리고 단지 git 작업이 아닙니다. clear5 초 정도 걸립니다 . AAAAH!

비슷한 문제를 경험 한 사람이 있습니까?


편집 : msysgit이 UAC 에서 잘 작동하지 않는 것으로 보이며 XP에서 개발하거나 UAC를 비활성화 한 상태에서 Vista 또는 7을 실행하여 발생하는 작은 디자인 감독 일 수 있습니다. Git Bash를 사용하여 시작 하면 OS X에서 보는 번개 속도가 나타납니다 (또는 네트워크 연결없이 Git Bash를 시작한 후 7에서 @Gauthier 답변 참조).Run as administrator

편집 2 : AH HA! 내 대답을 참조하십시오.


5 초 느리지 않습니다. 속도는 느리지 만 Cygwin 버전보다 빠릅니다.
Yann Ramin

@theatrus : 지금 막 스톱워치를 사용했습니다. 평균은 3.8 초였습니다. 그래서 당신 말이 맞지만 뭔가가 여전히 심각하게 잘못되었습니다.
Kevin L.

또 다른 msysgit 둔화는 OpenSSH의 이전 버전은 여기에 설명되어있다 darrell.mozingo.net/2011/09/29/...
JodaStephen

이에 msysgit의 위키 페이지를 참조하십시오 github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow
드류 녹스

답변:


54

Windows에서 몇 가지 구성 옵션을 설정하는 세 가지 명령을 실행하여 Git 속도를 크게 높일 수 있습니다.

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 관리자 권한으로 Git을 실행할 필요가 없도록 UAC 문제를 수정합니다 (업데이트 : Windows 2.8 용 Git에서 기본적으로 활성화 됨).

  • gc.auto .git /의 파일 수를 최소화합니다.


이것은 이제 받아 들여진 대답이어야합니다. 매력처럼 작동합니다!
krlmlr

8
이것은 나를 위해 작동하지 않습니다. 내 git bash는 명령을 내린 후에도 여전히 1-2 초 지연됩니다.
Jaskey

나를위한 매력처럼 일했습니다. 큰 저장소에서 내 자식 상태를 13 초에서 0.7 초로
낮추었습니다

2
git config --global core.fscache true나를 위해 아무것도하지 않았다; 그러나 git config core.fscache true속임수를 사용했습니다. 에 따르면 core.fscache는 환매 특약에 따라 설정입니다 때문입니다.
David Merriman 2015 년

2
@DavidMerriman "per repo"주석은 단순히 개별 저장소 에서이 설정을 변경할 있다는 내용입니다 . (모든 설정에 대해 사실이므로 왜 언급되었는지 모르겠습니다.) 주석이 repo 설정으로 fscache 작동 한다는 의미는 아닙니다 . 전역 설정은 리포지토리 별 설정으로 재정의되지 않는 한 머신의 모든 리포지토리에 적용됩니다.
shoelzer 2015 년

37

Vista 또는 7의 속도 저하에 대한 솔루션은 다음을 사용하여 Git Bash를 실행하는 것 같습니다 Run as administrator(또는 Git Bash에 대한 UAC 비활성화). 바로 가기에 UAC 비활성화 ... 또는 UAC 완전히 비활성화 ). 차이는 밤낮이며 7에서 git을 사용하는 것은 다시 굉장합니다.

이것은 알려진 문제 와 관련된 것으로 보이며 내가 추측 했듯이 msysgit의 개발 환경XP 가 부분적으로 책임이 있습니다.


좋은 힌트 (의도적이지 않더라도 :)). 1.7.4를 사용하여 Windows 2008 R2에서 "git svn clone"을 실행하는 것은 매우 느 렸습니다 (SVN에는 5000 개 이상의 커밋이 있고 그 절반을 얻는 데 몇 주가 걸렸습니다). XP에서는 "네이티브"환경에서 매우 빠릅니다. 감사!
bdrajer

1
UAC를 비활성화하고 관리자에서 실행을 시도했지만 여전히 Git Bash에 입력하는 모든 명령을 실행하는 데 약 5 초가 걸립니다 ( ls실제로 빈 디렉터리에서도)
로빈 윈 슬로

4
이 질문에 대답 대신 나를 위해 일한 : stackoverflow.com/questions/4485059/...
로빈 윈 슬로

리포지토리를 시스템 파티션이 아닌 파티션으로 이동하면 팀의 성능이 크게 향상되고 체크 아웃시 임의의 "파일을 만들 수 없음"문제가 방지되었습니다.
로렌스

1
나는 많은 해결책을 시도했다 .. 이것은 (관리자로 실행되는) 마침내 나를 위해 일했다 .. 이제 내 자식은 다시 한번 번개처럼 빠르다 .. 감사합니다 .. :)
AweSIM

14

나에게 문제는 쉘 프롬프트에서 __git_ps1을 사용하는 것이 었습니다. msysgit의 느린 디스크 액세스로 인한 것 같습니다.

해결책은 / etc / profile의 PS1 = ... 줄에서 $ (__ git_ps1)을 제거하는 것이 었습니다.

이 솔루션이 적용되는지 빠른 테스트 : git 셸에서 export PS1 = '$'를 입력하고 작업 속도를 확인합니다.


감사! 이것은 Windows XP에서 내 문제로 판명되었습니다. 참조 stackoverflow.com/q/5851611/200688
AndyL

2
__git_ps1SHOWDIRTYSTATE 및 / 또는 SHOWUNTRACKEDFILES 설정을 비활성화하는 경우 활성화 되도록 할 수 있습니다. stackoverflow.com/a/4203968/321973
Tobias Kienzler

이것은 Windows 7에서 저에게 필요한 전부였습니다. 특히이 컴퓨터가 관리자 권한없이 잠겨 있기 때문에 운이 좋았습니다!
Air

12

새 컴퓨터에서 여기에있는 모든 팁 (다른 답변의 팁 포함)을 시도했지만 작동하지 않았으며 Git은 여전히 ​​지옥처럼 느립니다.

그런 다음 사전 설치된 바이러스 검색 소프트웨어를 살펴 보았습니다. McAfee Security Center의 실시간 검색을 비활성화했습니다. . "git svn rebase"에 필요한 시간이 30 초에서 5 초 (!)로 감소했습니다.

나는 이것이 Windows에서 느린 Git에 여전히 문제가있는 다른 사람들에게 도움이되기를 바랍니다.


4
내 Git Bash도 Avast의 제외 경로에 git 설치의 전체 경로를 추가 한 후 느리게 시작됩니다! Anti-Virus Suite, git bash 시작 시간이 0.5

이것이 저에게 답이었습니다 !! AVG Free를 사용합니다. 방금 10 분 동안 비활성화했는데 갑자기 veeerrryyyy 느린 bash가 번개처럼 빠릅니다.
Mörre 2015-06-18

Windows Defender를 사용하는 경우 폴더 또는 프로세스를 제외 할 수 있습니다. support.microsoft.com/en-us/help/4028485/…
Ehtesh Choudhury

9

아아 '관리자 권한으로 실행'이 작동하지 않았지만 Kevin L이 발견했듯이 네트워크 어댑터 연결을 끊고 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

제 동료는 Outlook이 실행될 때마다이 동작을했습니다. 전망을 죽이고 다시 테스트하려고합니다.

다음을 테스트 해 볼 수도 있습니다.

  • 네트워크에 연결하지 않고
  • 바이러스 백신을 실행하지 않고
  • 다른 프로그램이 실행되지 않습니다.

3
Outlook도 바이러스 백신도 효과가없는 것 같지만 네트워크 연결을 비활성화 한 다음 git을 시작하면 다시 연결 한 후에도 매우 빠릅니다 ( "Unix"읽기). 흥미로운 ...
Kevin L.

네. 그리고 git bash는 빠르게 유지됩니다 (닫고 다른 인스턴스를 열 때까지).
Kevin L.

2
네트워크 연결도 저에게 효과적이었습니다. 네트워크 연결과 어떤 관계가 있는지 궁금합니다. 이상하게도 홈 네트워크에서는 완벽하게 작동하지만 사무실 네트워크에서는 작동하지 않습니다.
Sarath

이것은 새로운 iMac에서 Windows 7 Professional 64 비트의 문제를 해결했습니다. 건배!
longda 2011

제안 된 +1 안티 바이러스가 내 특정 시스템의 원인이었습니다. Windows 7 x64 궁극. UAC (다른 곳에서 언급)는 슬프게도 아무런 차이가 없었습니다. 모두에게 감사합니다
MickyD 2011

3

특정 사용자 계정에서 실행할 때 별도의 git.exe 인스턴스가 WaitForSingleObject() 되므로 한 번에 하나의 git.exe 작업 만 효과적으로 실행할 수 있습니다. 사용자 계정을 변경하면이 문제가 해결되었습니다.

여기에 세부 정보 : https://stackoverflow.com/a/13054022



1

이 문제 에서 볼 수 있듯이 UAC 가상화를 끈 상태에서 실행하면 (UAC를 완전히 비활성화 할 필요가 없음) 큰 차이가 있습니다.

이 게시물은이 기능 을 끄는 방법을 설명합니다 (게시물 하단, 하나의 레지스트리 설정 참조).

내가 연결하는 하나의 (대형) SVN 리포지토리에서 위의 변경으로 "git svn rebase"에 필요한 시간이 15 초에서 5 초로 감소하여 요소 3이 향상되었습니다.


이 문제 (추적기)는 종료되었습니다. 이에 대한 새로운 문제는 다음과 같습니다. github.com/msysgit/git/issues/94
childno͡.de

1

Windows 7 UAC를 엉망으로 만드는 대안은 Program Files 폴더 외부에 mysysgit을 설치하는 것입니다. 예를 들어 "C : \ Program Files (x86) \ Git"대신 "C : \ git"에 설치해보십시오.

나는 '관리자 권한으로 실행'및 UAC 컨트롤을 조작하려고 시도했지만 포기하고 새로 설치를 시작했습니다. 이전에는 최대 약 15KiB / s를 얻었지만 지금은 60kiB / s 이상입니다.


1

UAC를 꺼도 성능이 향상되지 않으면 luafv 드라이버를 끄십시오. 이것은이 페이지의 거의 모든 것과 유사한 질문 몇 가지를 시도한 후에 저에게 효과적이었습니다. Git은 쓸모 없게 느리다에서 꽤 괜찮은 수준으로 바뀌 었습니다.

'regedit'를 열고 레지스트리 키를 찾습니다.

HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/services/luafv

값을 Start2에서 4로 변경합니다 .

luafv 여기 에서 비활성화하는 방법에 대한 세부 정보를 찾았습니다 . 개인적으로 무엇인지, 무엇인지 전혀 모릅니다 luafv. 이 페이지는 당신이 그것을 끄면 일어날 수있는 나쁜 일들에 대한 다양한 경고를 제공합니다.

편집 : 아래의 의견은 잘못된 방향으로 돌아 갔다고 지적했습니다 (링크가 올바른 방향으로 있음). 이제 수정되었습니다. 레지스트리를 삭제 한 사람들에게 죄송합니다. :)


광산은 기본적으로 2로 설정됩니다. 여전히 꽤 느립니다.
imanuelcostigan

@imanuelc : 아이러니하게도, 저도 지금 (새 컴퓨터에서) 느립니다.
jwg

2
이것은 올바르지 않습니다. 2에서 4로 변경해야합니다. 2는 자동 시작을 의미합니다. 4는 비활성화됨을 의미합니다.
richb 2014-06-10

1

나는 잠시이 문제를 해결해 왔으며 문제의 원인을 찾아내는 데 어려움을 겪었습니다. 결국 저는 극적인 영향을 미치는 두 가지를 발견했습니다.

  • Windows 검색 서비스를 끕니다. 이것은 성능에 극적인 영향을 미쳤습니다.
  • Git 확장 닫기. 백그라운드에서 Git Extensions Browse 창을 열어두면 Cygwin git 명령 실행 시간이 겉보기에 최대 약 10 배까지 증가했습니다.

0

활성화 된 경우 여기서 문제 는 bash-completion 일 있으며, 이는 Linux보다 Windows에서 상당히 느립니다.

PS1 변수를 "$"와 같이 간단한 것으로 설정하고 속도가 빨라지는지 확인하십시오. 그렇다면 최근의 git-versions에서 bash-completion에 대한 최적화가 있음을 유의하십시오. 업그레이드해야 할 수도 있습니다.


1
나는 절대적인 최신 버전을 실행하고 있습니다 (위의 VonC의 답변에 대한 내 의견 참조). 그러나 나는 이것을 시도 할 것이다.
Kevin L.

1.7.0.2가이 맥락에서 반드시 최첨단은 아닙니다. 내가 말하는 최적화는 upstream-git에서 일어났습니다. Windows 용 Git 1.7.0.2 릴리스에 있는지 확실하지 않습니다.
kusma

0

이것은 나를 위해 일했습니다. 모든 솔루션에 한 가지 크기가 될 것이라고 기대하지 마십시오.

bash 및 Windows에서 $ HOME 환경 변수를 확인하십시오. 사용자 계정을 가리키는 경우 사용자의 Windows 프로필 / 권한을 확인하십시오. 그에 따라 사용자 계정 또는 $ HOME을 변경하십시오.


6
이 불길한 프로필 / 파마에 대해 좀 더 자세히 설명해 주시겠습니까?
Tobias Kienzler 2012.11.16

0

제한된 사용자 계정으로 Windows 7 x64에서 Windows 용 git (msysgit)을 꽤 오랫동안 실행하는 것과 동일한 문제가 발생했습니다. 내가 여기와 다른 곳에서 읽은 내용에서 공통 주제는 관리 권한 및 / 또는 UAC의 부족 인 것 같습니다. UAC가 내 시스템에서 꺼져 있기 때문에 프로그램 파일 디렉토리에서 무언가를 쓰거나 지우려고한다는 설명이 가장 의미가 있습니다.

어쨌든 zipinstaller와 함께 git 1.8의 휴대용 버전을 설치하여 문제를 해결했습니다. zipinstaller가 작동하려면 .7z 배포 파일의 압축을 풀고 zip으로 다시 압축해야했습니다. 또한 시스템 경로에 해당 디렉토리를 수동으로 추가해야했습니다.

이제 성능이 좋습니다. 제한된 사용자로서 권한이없는 Program Files (x86) 디렉토리에 설치되었지만 동일한 문제가 발생하지 않는 것 같습니다. 나는 휴대용 버전이 아마도 파일을 작성 / 삭제하는 부분에서 좀 더 보수적이라는 사실이나 1.7에서 1.8로 업그레이드했기 때문이라고 생각합니다. 어느 것이 이유인지 찾아 내려고하지 않을 것 입니다. 지금 은 훨씬 더 잘 작동한다고 말하면 충분합니다 .


0

msysgit 제거, 창 다시 시작, 최신 버전의 msysgit 설치를 시도 할 수 있습니다. 그것은 나를 위해 속임수를 쓰는 것 같았습니다. 여기에서이 제안을 찾았습니다.

https://stackoverflow.com/a/4506192/1413941

편집하다

추신 : 느린 Git 문제가 발생하기 전에 이미 UAC를 비활성화 했으므로 UAC를 비활성화 해야하는지 Git이 빠르게 작동하지 않는지 알 수 없습니다.


0

가장 좋은 해결책은 지적한대로 관리자 권한으로 실행하는 것입니다. 그러나 적어도 git 상태를 빠르게 만드는 또 다른 옵션 은 trustctime = false 입니다. 그 전에 git 상태 는 약 30 초가 걸렸고 그 후 출력에 표시된 것과 동일한 양입니다.


0

다음 git 구성을 변경하여 중요한 성능 향상을 얻을 수도 있습니다.

git config --global status.submoduleSummary false

단순을 실행할 때 git statusWindow 7 x64 명령을 내 컴퓨터를 실행하는 데 30 초 이상 걸렸습니다. 이 옵션이 정의되면 명령이 즉시 실행됩니다.

다음 페이지에 설명 된대로 Git 자체 추적을 활성화하면 문제의 원인을 찾을 수 있었는데, 이는 설치에 따라 다를 수 있습니다. https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so- 느린


-4

Git 저장소를 분석하는 것은 아마도 프롬프트의 문제 일 것입니다. Git 저장소 외부에서 "지우기"를 수행하여 테스트 할 수 있습니다. git-completion.bash를 패치하거나 core.filemode로 트릭을 사용하여 속도를 높일 수 있습니다.

Visual Studio 통합 : 이것은 오픈 소스입니다. 다른 사람들이 당신을 위해 무료로 일하기를 기대하는 것은 불공평합니다.

msysGit 메일 링리스트에 질문하지 않는 것도 재밌지 만 지금은 알았습니다 .


5
StackOverflow의 Flaming은 허용되지 않아야합니다. 담론을 좀 더
정중

1
재미 있네요. 내 의견은 구체적인 기술 정보가 담긴 유일한 의견이었습니다 . 문제 해결을 지원하겠다는 제안은 아직 진행 중입니다. 물론 저는이 문제가 여기에서 제기 된 스택 오버플로에 대해 상당히 화가났습니다. 제가 모니터링하지 않고 다른 사람들이 제게 지적해야했던 문제입니다. 이 문제에 대해 직접 듣고 싶었습니다. 나는 당신에 대해 잘 모르지만 원래 프로젝트에 문제가 통보되지 않으면 불공평하다고 생각합니다.
Dscho 2010

2 년 후 동의합니다. 나는 너무 가혹했습니다. 미안 해요, Dscho. git 개발자 메일 링리스트는 정말 도움이됩니다.
phord

2
@Dscho, 사람들은 Git의 버그가 아닌 일부 구성 또는 플랫폼 문제가 없는지 확인하기를 원하기 때문에 종종 여기에 게시한다는 것을 이해해야합니다.
jwg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.