Git Bash는 Windows 7 x64에서 매우 느립니다.


435

작은 프로젝트를 개발하는 동안 Windows와 Ubuntu에서 Git을 사용하여 자주 두 프로젝트 사이를왔다 갔다했습니다. 문제는 Git Bash가 지속적으로 느려진다는 것입니다.

느리게 말하면 달리기 cd는 8-25 초가 걸리고 달리는 git명령은 5-20 초가 ls걸리며 때로는 30 초까지 걸릴 수 있습니다. 말할 것도없이, 이것은 비생산적이면서도 재미 있지 않습니다. Windows에서 Git이 느리다는 것을 알고 있지만 이것은 어리 석습니다.

나를 위해 일한 한 가지 해결책은 ( 이 답변 에서 제안한대로) 네트워크 연결을 비활성화하고 Git Bash를 시작한 다음 다시 연결하는 것입니다. 때로는 며칠 동안 계속해서 빠르게 실행되지만 성능은 항상 저하됩니다. 몇 주 동안 msysgit 토론 그룹, Stack Overflow, msysgit 문제 목록 등을 껐다 켰지 만 작동하는 솔루션을 설정할 수 없었습니다.

지금까지 시도했습니다.

  • 바이러스 스캐너의 제외 목록에 Git 및 프로젝트 폴더 추가
  • 바이러스 스캐너를 완전히 비활성화 (Kaspersky IS 2011)
  • Outlook이 실행되고 있지 않은지 확인 (Outlook 2007)
  • 다른 모든 응용 프로그램 종료
  • 관리자로 Git Bash 실행
  • 네트워크 연결 비활성화, Git Bash 시작 및 연결 비활성화
  • 네트워크 연결 비활성화, Git Bash 시작, 연결 다시 활성화 (가끔 만 작동)
  • 달리는 git gc
  • 그리고 위의 조합

나는 두 사람이 Bash 완료를 비활성화하는 데 성공했다고 읽었지만 이상적으로는 적극적으로 유지하고 싶습니다. msysgit의 버전은 1.7.3.1-preview20101002이고 OS는 Windows 7 x64입니다. Linux에서 동일한 작업을 실행하는 것은 예상보다 빠릅니다. Linux를 독점적으로 사용하지만 Windows에서도 특정 응용 프로그램, 테스트 등을 실행해야합니다.

비슷한 문제가 발생한 사람이 있습니까? 그렇다면 근본적인 문제는 무엇이고 해결책은 무엇입니까 (있는 경우)?

이것은 Git 리포지토리를 넘어서지 만 참고를 위해 Git을 사용했던 리포지토리는 매우 작습니다. 최대 4-50 파일.


1
낙심하지 말고 Cygwin은 x64에서 매우 느리므로 Windows XP 32 비트에서 시도하는 것이 좋습니다.
ismail


5
같은 시스템에서는 반년 전 속도가 느리지 않았습니다. 그들은 무언가를 바꿨을 것입니다.
Tomáš Zato-Reinstate Monica

2
여기에 거의 모든 컴퓨터에 카스퍼 스키 AV는 대규모 자식 둔화 카스퍼 스키가 고장 "해제"를 avp.exe는 아직 완전히 종료 한 후 실행합니다. kaspersky를 완전히 다시 설치하면 일반적으로 후자의 문제가 해결됩니다.
peterchen

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

답변:


409

세 가지 명령을 실행하여 일부 구성 옵션을 설정하여 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 UAC 문제를 수정하여 관리자 권한으로 Git을 실행할 필요가 없습니다 (업데이트 : Windows 2.8 용 Git에서 기본적으로 활성화 됨)

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


나에게 도움이되지는 않았지만 아래 언급 된 수출 PS1 = '$'에 도움이되었습니다. 그래서 문제는 터미널 라인이라는 것을 알고 있습니다.
Koshmaar

67
이 모든 것이 기본적으로 활성화되어 있기 때문에 2017 (git 2.12)에서 완전히 쓸모없는 설정입니다. 그러나 자식은 여전히 ​​똥처럼 천천히 작동합니다.
ieXcept

2
Windows 10에서도 잘 작동합니다. 이 @shoelzer에 감사드립니다!
Joe

1
파일을 256으로 제한하면 일부 문제가 발생할 수 있습니다. 그리고 처음 두 옵션은 새로운 버전의 git에서 이미 활성화되었습니다.
nPcomp

@sonyvizio 어떤 종류의 문제가 있습니까?
shoelzer

102

배쉬 프롬프트에 Git 정보가 표시되어 있습니까? 그렇다면 모든 명령에서 실수로 너무 많은 작업을 수행했을 수 있습니다. 이 이론을 테스트하려면 Bash에서 다음 임시 변경을 시도하십시오.

export PS1='$'

11
문제는 $(__git_ps1)...이 제거하면 모든 것을 초고속으로 만듭니다
Hendy Irawan

10
우리 중 미 초심자들에게이 명령은 정확히 무엇을 하는가? "임시"라고 말하면 명령을 어떻게 되돌 립니까?
불멸 블루

5
또한 성능 문제를 해결했습니다. 영구적으로 수정하려면에 추가 된 C:\Program Files (x86\Git\etc\profileif-then-else를 편집 하고 주석 처리하십시오 . __git_ps1PS1
Tom

6
현재 버전 2.18.0에서는 / etc / profile에서 __git_ps1 명령을 찾을 수 없습니다. 다른 곳으로 옮겼습니까?
keinabel

8
C : \ Program Files \ Git \ etc \ profile.d \ git-prompt.sh로 이동 한 것 같습니다. 그 파일에 __git_ps1을 주석 처리하고 훨씬 빨리 갔다 (그러나 프롬프트에서 지점 정보를 분실)
미야기

85

내 Windows 홈 디렉토리가 네트워크에 있고 Git Bash 명령이 먼저 찾고 있다고 생각했습니다. 필자가 충분히 살펴 보았을 때 Windows 파일 서버의 공유 위치 는 존재하지 않더라도 먼저 $PATH나열했습니다 . 내보내기 명령을 먼저 편집 하고 주석 처리했습니다 ./h/bin/h/h/bin
/etc/profile$PATH

#export PATH="$HOME/bin:$PATH"

이것은 아마도 Git Bash가 더 이상 네트워크를 통해 실행 파일을 찾지 않기 때문에 내 명령이 훨씬 빠르게 실행되도록했습니다. 내가 /etc/profile있었다 c:\Program Files (x86)\Git\etc\profile.


6
나는 같은 문제가 있었다. 나는 변화 HOME="$(cd "$HOME" ; pwd)"HOME="$(cd "$USERPROFILE" ; pwd)", 지금은 모든 것이 엄청나게 빠릅니다. 팁 고마워.
Jon Sagara

2
나는이 변형을 사용하여 성공했습니다 : 프로필에서 $ HOMEDRIVE 참조를 제거하고 $ HOME을 $ USERPROFILE로 강제하십시오. 또한 Git Bash 바로 가기의 속성에서 "시작"을 % USERPROFILE %로 설정하십시오.
Aidan Ryan

11
이것은 대부분 내 문제를 해결했지만 적어도 2.7.2부터 Git을 사용하면 / etc / profile 파일에서 직접 대신 /etc/profile.d/env.sh에서 내보내기를 발견했습니다.
Jared Siirila

15
고마워요, 같은 문제이지만, HOME이라는 (사용자) 환경 변수를 만들어 원하는 홈 디렉토리를 지정하여 수정했습니다. $ HOME이 없으면 분명히 git bash는 기본적으로 % USERPROFILE %로 설정됩니다. 그 후 git bash는 번개가 빨리옵니다.
JHH

6
효과가 있었던 유일한 옵션은 의견에 설명 된 @JHH였습니다. HOME이라는 Windows 사용자 환경 변수를 추가하고 원하는 홈 디렉토리를 정의하십시오. (제어판-> 시스템-> 고급 시스템 설정-> 환경 변수)
RenRen

45

네트워크 드라이브가 성능 문제라는 것을 알았습니다. HOME느린 네트워크 공유를 가리키고있었습니다. 나는 무시할 수 HOMEDRIVE없었지만 그것은 내가 본 것에서 문제가되지 않습니다.

데스크탑-> 속성-> 고급 시스템 설정-> 환경 변수 사용자 변수에 추가 섹션에서 컴퓨터를 마우스 오른쪽 단추로 클릭하여 환경 변수를 설정하십시오.

HOME=%USERPROFILE%

4
이것은 효과가 있었다. 네트워크 문제가있는 모든 사람에게 이것은 실제 솔루션입니다. 설정 파일을 편집 할 필요는 없습니다.
Carlos Calla

1
Env User Var HOME을 % USERPROFILE % (으)로 정의하지 못했습니다. HOME = C : 나는 SYSTEM VAR을 정의 \ 사용자 \ MyUserName 에다
colin_froggatt

나를 위해 일했다! 감사. @colin_froggatt와 같은 것을 수행했지만 대신 사용자 환경 변수에서 HOME = C : \ Users \ myUserName
Ð.를 설정했습니다.

22

Chris Dolan의 답변을 확장하여 다음과 같은 대체 PS1설정을 사용했습니다 . ~ / .profile에 코드 조각을 추가하기 만하면됩니다 (Windows 7 : C : /Users/USERNAME/.profile).

fast_git_ps1 ()
{
    printf -- "$(git branch 2>/dev/null | sed -ne '/^\* / s/^\* \(.*\)/ [\1] / p')"
}

PS1='\[\033]0;$MSYSTEM:\w\007
\033[32m\]\u@\h \[\033[33m\w$(fast_git_ps1)\033[0m\]
$ '

이것은 채색 된 쉘의 이점과 현재 분기 이름의 표시 (Git 저장소에있는 경우)를 유지하지만 내 컴퓨터에서 ~ 0.75 초에서 0.1 초까지 훨씬 빠릅니다.

블로그 게시물을 기반으로 합니다 .


좋은 대답입니다. 그러나 ~ / .bashrc에서 '__git_ps1 ()'을 다시 정의하고 빈 문자열을 인쇄하기로 결정했습니다. 모든 Bash 명령의 속도를 높입니다.
ajukraine

나는 git 초보자입니다.이 fast_git_ps1과 원래의 복잡한 __git_ps1의 차이점이 무엇인지 알고 싶습니다. 나는 이것이 대부분의 "정상적인"경우에는 효과가있을 것이라는 생각을 얻지 만, 무엇이 정상이며 어디에서 실패할까요?
sundar-복 직원 모니카

나는 그것이 실패 할 경우를 모른다. 나는 __git_ps1을 전에 사용했지만 성능 문제를 발견 했으므로 git이 표시된 정보를 추출하는 작업을 줄이려고 노력했습니다.
Wilbert

2
원본 __git_ps1에는 지사 이름뿐만 아니라 상태 정보도 포함됩니다. 예를 들어, 헤드 분리 상태, git dir, Bare Repo, Cherry Picking 또는 Rebasing 또는 Merging의 중간에있는 경우 ...이 속도는 빠르지 만 놓칠 수있는 경우가 있습니다 이 추가 정보, 특히 Git 초보자로서.
Drew Noakes

22

귀하의 문제는 네트워크 기반 일 수 있지만 개인적으로 git status두 가지 수정을 수행하여 로컬 통화를 10 배 (7 + 초에서 700ms로 단축)했습니다. 이 파일은 21,000 개의 파일과 과도한 수의 큰 이진 파일이있는 700MB 저장소에 있습니다.

하나는 병렬 인덱스 사전로드를 활성화하는 것입니다. 명령 프롬프트에서 :

git config core.preloadindex true
이것은 time git status7 초에서 2.5 초로 변경되었습니다 .

최신 정보!

다음은 더 이상 필요하지 않습니다. 패치가 mysysgit 1.9.4의로이 문제를 해결했다
https://github.com/msysgit/git/commit/64d63240762df22e92b287b145d75a0d68a66988
그러나, 당신은 입력하여 수정 프로그램을 활성화해야
git config core.fscache true

또한 UAC 및 "luafv"드라이버를 비활성화했습니다 (재부팅 필요). 이렇게하면 Windows Vista, 7 및 8에서 시스템 위치에 쓰려는 프로그램을 리디렉션하는 대신 해당 액세스를 사용자 디렉터리로 리디렉션하는 드라이버를 사용할 수 없습니다.

이것이 Git 성능에 미치는 영향에 대한 토론을 보려면 다음을 참조하십시오. https://code.google.com/p/msysgit/issues/detail?id=320

이 드라이버를 비활성화하려면 regedit에서 "start"키 HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/luafv를 4로 변경 하여 드라이버를 비활성화하십시오. 그런 다음 UAC를 가장 낮게 설정하고 "알리지 마십시오".

이 드라이버를 비활성화하면주의해야 할 경우 (필수) 대안은 시스템 파티션과 다른 드라이브 (또는 파티션)에서 실행중인 것입니다. 분명히 드라이버는 시스템 파티션의 파일 액세스에서만 실행됩니다. 두 번째 하드 드라이브가 있으며 D 드라이브에서 수행하지 않고 C 드라이브 에서이 레지스트리 수정으로 실행할 때 동일한 결과가 나타납니다.

이 변경은 time git status2.5 초에서 0.7 초로 걸립니다.

https://github.com/msysgit/git/pull/94https://github.com/git/git/commit/d637d1b9a8fb765a8542e69bd2e04b3e229f663b 에 따라 Windows에서 속도 문제와 관련하여 어떤 추가 작업이 진행 중인지 확인할 수 있습니다. .


10
이는 1968 년에 유닉스에서 간단하고 우아한 방식으로 해결 된 문제에 대한 이디 오 틱스와 의미있는 Microsoft 솔루션을 다시 한 번 강조합니다. Microsoft의 팽창과 리팩토링 / 유연성 부족으로 인해 얼마나 많은 생산 노력, 시간 및 비용이 낭비 되었습니까? 전세계 대담?
v.oddou

20
68에서 git을 사용했던 것을 기억합니다. 영광 스럽습니다.
Charlie Brown

2
하하 리누스 전에 년 @CharlieBrown 주위 온
cchamberlain

1
git 2.1에서 기본적으로 활성화 됨 stackoverflow.com/a/24045966/4854931
Alex78191

18

Git을 완전히 제거하고 다시 시작 (클래식 Windows 치료) 한 후 Git을 다시 설치하는 것이 치료 방법 인 것으로 보입니다. 또한 남은 모든 bash 구성 파일을 지 웠습니다 (수동으로 생성되었습니다). 모든 것이 다시 빠릅니다.

어떤 이유로 다시 설치할 수 없거나 바람직하지 않은 경우 Chris Dolan의 답변 에서 참조 된 PS1 변수를 변경하려고 시도합니다 . 특정 작업에서 속도가 크게 향상되었습니다.


3
다시 시작하지 않고 다시 설치해도 작동하지 않습니다. uninstall-restart-install이 작동했습니다. 감사! bash가 왜 그리고 어떻게 느려졌는지 아는 것이 좋을 것입니다.
Gauthier

중간에 재부팅하여 다시 설치해도 아무런 차이가 없었습니다.
RyanW

@RyanW 나는 위의 해결책을 넘어서 나에게 도움이 될 것을 두려워하지만,이 문제는 아직 영구적으로 해결되지 않은 것 같으므로 msysgit의 관리자와 연락하여 알아낼 수 있는지 확인하고 싶을 수도 있습니다. 이 문제의 원인을 알려주세요.
Gemini14

3
어떤 bash 구성 파일을 정확하게 지웠습니까?
Scott

3
이것은 답변에 대한 해결책이 아닙니다. 일부 구성 파일을 제거했다가 다시 설치하면 변경 될 수 있습니다. 재설치가 해결책이라고 말하면 잘못되었습니다. 다른 사람들이 제거하고 다시 설치할 수 있으며 구성 파일이 동일 할 수 있으므로 모든 사람에게 적용되지 않습니다.
Carlos Calla

10

"관리자 권한으로 실행"으로 cmd.exe를 시작하여 Windows 7 x64에서 느린 Git 문제를 해결했습니다.


10
질문은 git bash에 대해 이야기합니다.
manojlds

2
관리자 권한으로 git bash를 실행할 수 있습니다. 그것은 UAC 문제를 나타내는 것처럼 보일 수 있습니다
krosenvold

3
와우, 관리자로서 git bash를 실행하는 엄청난 속도 향상
Evil E

왜이 답변이 6 표를 얻었는지 잘 모르겠습니다. 이 답변이 문제를 완전히 해결했다고 생각합니다. 속도가 크게 향상되었습니다.
vinoth10

2
@ vinoth10 글쎄, 관리자로서 실행하는 데 문제가 있습니다. 여러 가지 이유로 나쁜 생각이며, 많은 기업 유스 케이스는 전혀 옵션이 아닙니다. 사용자를 높여서 성능 문제를 해결하는 것은 끔찍한 해결책입니다.
JHH


6

Chris Dolan과 Wilbert의 답변에서 언급했듯이 PS1은 속도를 늦 춥니 다 .

Dolan에서 제안한대로 완전히 비활성화하거나 Wilbert에서 제공하는 스크립트를 사용하는 대신 훨씬 빠른 "dumb PS1"을 사용합니다.

그것은 사용합니다 (git symbolic-ref -q HEAD || git rev-parse --short HEAD) 2> /dev/null:

PS1='\033[33m\]\w \n\[\033[32m\]$((git symbolic-ref -q HEAD || git rev-parse -q --short HEAD) 2> /dev/null) \[\033[00m\]# '

내 Cygwin에서 이것은 Wilbert의 "fast_Git_PS1"답변 보다 200ms 대 400ms 보다 빠르 므로 약간의 프롬프트 부진을 없애줍니다.

처럼 복잡하지 않다 __git_ps1당신이 .git 디렉토리 등으로하지만, 일상적인 사용을위한 CD가 좋은 충분하고 빠른 때, 예를 들어이 프롬프트를 변경하지 않습니다 -.

이것은 Git 1.7.9 (Cygwin에서 테스트되었지만 모든 플랫폼에서 작동해야 함)입니다.


--short옵션을 사용하여 인쇄하지 않을 수도 있습니다refs/heads/
friederbluemle

@friederbluemle, git의 어떤 버전을 사용하고 있습니까? 광산 (1.7.9)은 제공하지 않습니다 --short에 대한 symbolic-ref명령.
sinelaw

git repo 외부에있을 때 오류를 인쇄하지 않고 분리 된 HEAD에 대해 작동하도록 업데이트되었습니다.
sinelaw

나는 1.8.4 (msysgit) 사용하고 있습니다
friederbluemle

6

다음 Git 구성을 변경하면 성능이 크게 향상 될 수 있습니다.

git config --global status.submoduleSummary false

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

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


5

Git Bash와 Git GUI에서 동일한 문제가 발생했습니다. 두 프로그램 모두 잘 작동하는 데 사용되지만 크롤링 속도가 무작위로 느려졌으며 그 이유를 알 수 없었습니다.

결과적으로 Avast였습니다. Avast는 다양한 프로그램 (내가 작성한 프로그램 포함)에 이상한 일이 발생했기 때문에 잠시 동안 사용하지 않도록 설정했으며 Bash는 이제 Linux에서와 같이 빠르게 실행됩니다. 방금 Git 프로그램 파일 폴더 ( C:\Program Files\Git)를 Avast 제외 목록에 추가했으며 이제는 Linux에서와 같이 빠르게 실행됩니다.

그리고 예, 안티 바이러스 소프트웨어는 원래 게시물의 문제가 아니라는 것을 알고 있지만 누군가에게 유용 할 수 있도록 여기에 넣겠습니다.


4

이러한 다른 답변 외에도 병렬 하위 모듈 가져 오기를 사용하여 여러 하위 모듈이있는 프로젝트를 가속화했습니다 (2016 년 초 Git 2.8 이후).

이를 사용하여 수행 하거나 git fetch --recurse-submodules -j8설정할 수 있지만 사용 git config --global submodule.fetchJobs 8하거나 사용하려는 많은 코어가 있습니다.


2

cmd에서 Git을 사용하는 경우 Git Bash에서 Git을 실행하십시오. cmd에서 git.exe는 실제로 시작할 때마다 올바른 환경을 설정 한 다음 실제 git.exe 만 시작하는 래퍼입니다. 원하는 작업을 수행하는 데 필요한 시간보다 최대 두 배의 시간이 걸릴 수 있습니다. 그리고 Git Bash는 시작할 때만 환경을 설정합니다.



2

결합 된 답변 :

  1. Wilbert 's -PS1에 포함 할 정보
  2. 의를 sinelaw - (<branch_name>)또는(<sha>)
# /unix/140610/using-variables-to-store-terminal-color-codes-for-ps1/140618#140618
# /unix/124407/what-color-codes-can-i-use-in-my-ps1-prompt
# \033 is the same as \e
# 0;32 is the same as 32
CYAN="$(echo -e "\e[1;36m")"
GREEN="$(echo -e "\e[32m")"
YELLOW="$(echo -e "\e[33m")"
RESET="$(echo -e "\e[0m")"

# /programming/4485059/git-bash-is-extremely-slow-in-windows-7-x64/19500237#19500237
# /programming/4485059/git-bash-is-extremely-slow-in-windows-7-x64/13476961#13476961
# /programming/39518124/check-if-directory-is-git-repository-without-having-to-cd-into-it/39518382#39518382
fast_git_ps1 ()
{
    git -C . rev-parse 2>/dev/null && echo " ($((git symbolic-ref --short -q HEAD || git rev-parse -q --short HEAD) 2> /dev/null))"
}

# you need \] at the end for colors
# Don't set \[ at the beginning or ctrl+up for history will work strangely
PS1='${GREEN}\u@\h ${YELLOW}\w${CYAN}$(fast_git_ps1)${RESET}\] $ '

결과:

frolowr @ RWAMW36650 / c / projects / elm-math-kids (마스터) $


더 빨리 만들지 않았다
keinabel

내가 볼 것입니다 지금이 순간 @keinabel core.commitGraph=true에서 blogs.msdn.microsoft.com/devops/2018/06/25/... 에서 다른 blogs.msdn.microsoft.com/devops/tag/git
rofrol

2

제한된 시간 동안 제한된 사용자 계정으로 Windows 7 x64에서 Windows 용 Git (msysgit)을 실행하는 것과 동일한 문제가 발생했습니다.

여기서 읽은 내용과 다른 곳에서 공통 주제는 관리 권한 및 / 또는 UAC가없는 것 같습니다. UAC가 시스템에서 꺼져 있기 때문에 프로그램 파일 디렉토리에서 무언가를 쓰거나 삭제하려고한다는 설명이 가장 적합합니다.

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

이제 성능이 좋습니다. Program Files (x86)제한된 사용자로 권한이없는 디렉토리에 설치되어 있지만 동일한 문제가 발생하지 않는 것 같습니다.

필자는 휴대용 버전이 파일을 쓰거나 삭제하는 위치에서 약간 더 보수적이라는 사실, 아마도 경우에 따라 1.7에서 1.8 로의 업그레이드라는 사실을 언급합니다. Bash를 포함하여 현재 더 잘 작동한다고 말하는 것으로 충분합니다.


1
UAC를 끄면 문제의 "큰"부분이 해결되는 것 같습니다 (수초 지연). ps1 핵이 나머지 작업을 수행했습니다.
krosenvold

SSD, 32GB RAM 및 쿼드 코어 i7을 사용하는 것과 동일하며 다른 답변은 도움이되지 않았으며 UAC를 비활성화하고 재시작 및 git 명령은
즉각적입니다.

2

필자의 경우 실제로 Git Bash로 이어지는 Avast 바이러스 백신이었고 PowerShell조차도 실제로 느려졌습니다.

먼저 Avast를 10 분 동안 비활성화하여 속도가 향상되었는지 확인했습니다. 그 후, 읽기, 쓰기 및 실행을 위해 전체 Git Bash 설치 디렉토리를 Avast의 예외로 추가했습니다. 내 경우에는이었다 C:\Program Files\Git\*.


이 팁을 확인하고 싶습니다. Avast에서 자식을 제외하면 실제로 더 빨라집니다. 더 이상 기다리지 않고 자식 상태를 봅니다. 승리 7 x64
fajarhac

바이러스 백신은 간섭 만합니다.
Alex78191

1
고마워, 그것은 확실히 빠른 승리였다! 10 분 동안 avast를 비활성화하면 git 성능이 즉시 변경되는 것을 알 수 있습니다 (즉, 일반 실행 시간으로 돌아갑니다).
Marcello Romani

이 솔루션은 저에게 효과적이었습니다. McAfee + Windows 10 Ent.
FractalSpace

1

위의 어느 것도 나를 도울 수 없었습니다. 내 시나리오에서 문제는 다음과 같이 나타납니다.

  • 모든 ll명령은 느린 (실행하는 데 약 3 초를 복용했다)했다
  • 후속 ls 명령은 이전 ls 명령에서 45 초 이내에있는 경우에만ll 즉시 실행되었습니다 .

Process Monitor 로 디버깅 할 때 모든 명령 전에 DNS 요청이 있음을 발견했습니다.

따라서 방화벽 (내 경우에는 Comodo)을 비활성화하고 명령으로 문제를 실행하자마자 사라졌습니다. 방화벽이 다시 켜졌을 때 다시 되돌아 오지 않습니다. 가장 빠른 기회로 어떤 프로세스가 DNS 요청을 차단하고 있었는지와 대상이 무엇인지에 대한 자세한 내용으로이 응답을 업데이트하겠습니다.

BR, G


ll에 대한 별칭이 log되는가? 그에 대한 DNS 요청이있을 것 같지 않습니다.
마이클 - 클레이 셔키는 어디

1
ll의 별칭입니다 ls -l. 그리고 어쨌든 DNS 요청을 트리거하는 것은 여전히 ​​이상합니다 ... 한편 나는 여전히이 문제가 다시 나타나 회신에 세부 사항을 추가하기를 기다리고 있습니다.
조지

1

필자의 경우 Git Bash 바로 가기가 설정되었습니다 Start in:%HOMEDRIVE%%HOMEPATH%(Git Bash를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하여 확인할 수 있습니다). 이것은 네트워크 드라이브였습니다.

해결책은을 가리 키도록하는 것 %HOME%입니다. 그것을 가지고 있지 않다면 환경 변수에서 설정할 수 있으며 이제 Git Bash가 번개처럼 빠릅니다.


이 답변에 더 많은 투표권이 있어야한다고 생각합니다. 나는이 같은 추천을 게시하기 위해 여기에 왔지만, 당신이 이미 그것을 나에게 이겼다는 것을 보았습니다.
Jon

0

나는 또한 git PS1 slowness에 문제가 있었지만 오랫동안 데이터베이스 크기 문제 (큰 저장소)라고 생각하고 다양한 git gc트릭 을 시도 하고 있었고 다른 이유를 찾고있었습니다. 그러나 제 경우에는 문제는 다음과 같습니다.

function ps1_gitify
{
   status=$(git status 2>/dev/null )      # <--------------------
   if [[ $status =~ "fatal: Not a git repository" ]]
   then
       echo ""
   else
       echo "$(ps1_git_branch_name)  $(ps1_git_get_sha)"
  fi
}

을하는 git status모든 명령 줄 상태 표시 줄에 대한 것은 느렸다. 아야. 손으로 쓴 것입니다. 내가 시도했을 때 그것이 문제라는 것을 알았습니다.

export PS1='$'

하나의 답변에 언급 된 것처럼. 커맨드 라인이 매우 빨랐습니다.

이제 이것을 사용하고 있습니다 :

function we_are_in_git_work_tree
{
    git rev-parse --is-inside-work-tree &> /dev/null
}

function ps1_gitify
{
    if ! we_are_in_git_work_tree
    then
    ...

스택 오버 플로우 포스트 PS1 라인에서 git 현재 분기와 색상 을 사용하면 정상적으로 작동합니다. 빠른 Git 명령 행이 다시 있습니다.


문제는 당신이 작성한 스크립트로 인해 발생 했습니까? 아마 같은 스크립트를 찾는 다른 사용자들에게는 아마도 그 스크립트가 원인이 아닐 수도 있습니다.
Jolta

OP 질문을 살펴보십시오. 그는 자신이 확인한 많은 것을 언급했지만 여전히 그렇지 않았습니다. 나도 마찬가지였다. 그래서 여기에 도움이 될 때 확인할 또 다른 것을 추가했습니다. 그리고 내가 작성한이 특정 스크립트는 중요하지 않지만 개념은 PS1을보십시오.
Koshmaar

0

광산의 동료는 윈도우 (7)에 힘내에 문제가 있었다 git status checkoutadd빠른 있었지만, git commit나이를했다.

우리는 여전히 이것의 근본 원인을 찾으려고 노력하고 있지만 저장소를 새 폴더로 복제하면 문제가 해결되었습니다.


0

많은 사람들이 말했듯이 이것은 stashWindows에서 쉘 스크립트 이기 때문에 발생 하지만 Git 2.18.0 이후 Windows 설치 프로그램은 훨씬 더 빠른 (~ 90 %) 내장 버전의 stash- https : / /github.com/git-for-windows/build-extra/pull/203 .


도움이 stash되지만 stash구체적으로 언급 한 첫 번째 게시물 입니다. 다른 Git 작업에 영향을 줍니까?
Michael-Clay Shirky는 어디에 있습니까

내가 아는 한 더 나은 성능을 위해 기본 실행 파일을 사용 stash및 / 또는 rebase사용할 수있는 미리보기에는 두 가지 실험 기능이 있지만 미리보기에는 아무 것도 작은 부작용이있을 가능성이 적습니다.
bergmeister

1
추신 :이 기능은 v 2.19.1의 미리보기에서
제외되었으므로
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.