bestsource

Windows 7 x 64에서는 Git Bash가 매우 느리다

bestsource 2023. 4. 19. 23:20
반응형

Windows 7 x 64에서는 Git Bash가 매우 느리다

저는 작은 프로젝트를 개발하는 동안 Windows와 Ubuntu 모두에서 Git을 사용하고 있으며, 이 둘을 자주 왔다 갔다 합니다.문제는 Git Bash가 지속적으로 느려진다는 입니다.

'느리다는 말은 '느리다'는 cd되며, 8~25초 소요됩니다.git는 5~는 5~20초 .ls30살말할 필요도 없이, 이것은 비생산적인 것은 말할 것도 없고 재미도 없다.윈도우에서 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 x 64 입니다.Linux에서도 같은 작업을 실행하는 것은 예상대로 매우 빠릅니다.Linux만을 사용하고 싶지만 Windows에서도 실행해야 합니다(특정 애플리케이션, 테스트 등).

비슷한 문제가 발생한 적이 있습니까?그렇다면 근본적인 문제는 무엇이었습니까?또한 해결방안이 있다면 어떤 것이었습니까?

이것은 Git 저장소뿐만이 아닙니다만, 참고로 Git을 사용해 온 저장소는 꽤 작습니다.최대 4-50 파일입니다.

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

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

주의:

  • core.preloadindex 2.

  • core.fscacheUAC Git(Windows 2용 Git).8에서는 기본적으로 활성화되어 있습니다).

  • gc.auto는 .discdisc/disc/disc/disc/disc 를 최소화합니다.

Bash 프롬프트에 Git 정보가 표시됩니까?이 경우 모든 명령어에 대해 부주의로 너무 많은 작업을 수행하고 있을 수 있습니다.이 이론을 테스트하려면 Bash에서 다음과 같은 일시적인 변경을 시도합니다.

export PS1='$'

Windows 홈 디렉토리가 네트워크에 있어서 Git Bash 명령어가 먼저 검색되고 있는 것이 아닌가 생각했습니다. 다를까, 때.$PATH 라고되어 있습니다./h/bin 번째, 여기서 「」, 「」/h단, Windows 파일서버상의 공유입니다./h/bin존재하지 않습니다.
했습니다./etc/profile로 export에 했습니다.$PATH:

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

이로 인해 Git Bash가 더 이상 네트워크를 통해 실행 파일을 찾지 않기 때문에 명령어를 훨씬 더 빠르게 실행할 수 있게 되었습니다. ★★★/etc/profilec:\Program Files (x86)\Git\etc\profile.

네트워크 드라이브의 퍼포먼스에 문제가 있는 것을 알았습니다. HOME네트워크 공유 속도가 느리다는 것을 나타내고 있습니다.덮어쓸 수 없었습니다.HOMEDRIVE하지만 내가 본 바로는 문제가 되지 않는다.

바탕화면에서 컴퓨터를 우클릭하여 환경변수를 설정합니다. -- > 속성 -- > 상세 시스템 설정 -- > 환경변수 사용자 변수에 추가 섹션

HOME=%USERPROFILE%

에서, 는 Chris Dolan의 으로 다음과 같은 했습니다.PS1 의 경우 Usersprofile).fragment~.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초까지 훨씬 더 빠릅니다.

이것은 이 블로그의 투고에 근거하고 있습니다.

기반일 수 , 저는 으로 로컬의 속도를 git status2개의 변경을 실시해, 10배의 콜(7초 이상에서 700밀리초로 단축)을 실시합니다.이것은 파일 21,000개와 대용량 바이너리 파일의 수가 너무 많은 700MB 저장소에 있습니다.

하나는 병렬 인덱스 프리로드 활성화입니다.명령 프롬프트:

git config core.preloadindex true
이 바뀌었다time git status에서 22.5로 하다

업데이트!

하다1.9.4 mysysgit 1.9.4 의 되었습니다.
https://github.com/msysgit/git/commit/64d63240762df22e92b287b145d75a0d68a66988httpsgithub.com/msysgit/git/commit/
이 은 ,, 다, 다, 다, 다, 다, 다를 .
git config core.fscache true

또, UAC 와 「luafv」드라이버를 무효로 했습니다(재기동 필요).이것에 의해, Windows Vista, 7, 및 8 에서는, 시스템 로케이션에 쓰려고 하는 프로그램을 리다이렉트 하는 드라이버가 무효가 되어, 대신에 유저 디렉토리로 리다이렉트 됩니다.

이것이 Git 퍼포먼스에 어떻게 영향을 미치는지에 대한 토론은 https://code.google.com/p/msysgit/issues/detail?id=320를 참조하십시오.

, 로, 「합니다.HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/luafv4로 이동하여 드라이버를 비활성화합니다.알리지 않다

이 드라이버를 무효로 하면, 주의가 필요한 경우는, 시스템 파티션과는 다른 드라이브(또는 파티션)에서 다른 드라이버가 실행되고 있습니다.드라이버는, 시스템 파티션의 파일 액세스시에만 동작한다고 합니다.두 번째 하드 드라이브가 있는데, 이 레지스트리 수정으로 C 드라이브에서 실행해도 D 드라이브에서 실행했을 때와 동일한 결과가 나타납니다.

에는 「」이 필요합니다.time git status2에서 0됩니다.

https://github.com/msysgit/git/pull/94 및 https://github.com/git/git/commit/d637d1b9a8fb765a8542e69bd2e04b3e229f663b에 따라 Windows에서 진행 중인 속도 문제에 대한 추가 작업을 확인할 수도 있습니다.

Git의 완전 언인스톨, 재기동(기존의 Windows 의 치료법), Git 의 재인스톨이 치료제였던 것 같습니다.남아 있는 (수동으로 작성한) bash 설정 파일도 모두 삭제했습니다.모든 것이 다시 빠르다.

어떠한 이유로 재인스톨이 불가능하거나 바람직하다면 Chris Dolan의 답변에서 언급된 PS1 변수를 반드시 변경해 보겠습니다.그 결과, 특정의 조작이 큰폭으로 고속화되었습니다.

Windows 7 x 64 의 느린 Git 의 문제를 cmd 를 기동해 해결했습니다."관리자로서 실행"을 지정합니다.

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

git config --global status.submoduleSummary false

Simple 시git status윈도우 7 x 64 명령어를 실행하는데 30초 이상 걸렸습니다.이 옵션을 정의하면 명령어가 즉시 실행됩니다.

다음 페이지에서 설명한 대로 Git 자신의 트레이스를 활성화하면 문제의 원인을 찾을 수 있습니다.이 문제의 원인은 설치 방법에 따라 다를 수 있습니다.https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow

여기서 권장하는 바와 같이 core.preloadindex를 true로 설정하면 상당히 개선되었습니다.

Chris Dolan과 Wilbert의 답변에서 알 수 있듯이 PS1은 속도를 늦춥니다.

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

it it를 한다.(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에서는 200밀리초 대 400밀리초라는 Wilbert의 "fast_Git_PS1" 답변보다 빠릅니다.따라서 빠른 속도 저하가 다소 해소됩니다.

as it it it it it it it it 。__git_ps1예를 들어 CD를 .display 디렉토리에 넣어도 프롬프트가 바뀌지 않지만 일상적으로 사용하는 경우에는 충분하고 빠릅니다.

이것은 Git 1.7.9 (Cygwin, 단, 어떤 플랫폼에서도 동작합니다)에서 테스트되었습니다.

다른 답변과 더불어 병렬 서브모듈 페치를 사용하여 여러 서브모듈로 프로젝트 속도를 높였습니다(2016년 초 Git 2.8 이후).

하면 .git fetch --recurse-submodules -j8으로 설정하다git config --global submodule.fetchJobs 8

디바이스 매니저에서 AMD Radeon Graphics(또는 인텔 그래픽스)를 꺼야 도움이 되었습니다.

여기에 이미지 설명 입력

여기서 답을 찾았습니다.https://superuser.com/questions/1160349/git-is-extremely-slow-on-windows # =

Git Bash와 Git GUI 모두 같은 문제가 있었습니다.두 프로그램 모두 잘 돌아가곤 했는데, 갑자기 갑자기 속도가 느려져서 이유를 알 수가 없었어요.

아바스트Avast는 다양한 프로그램(내가 쓰는 프로그램 포함)에 이상한 일이 발생했기 때문에 잠시 사용하지 않도록 설정했습니다.【Bash】리눅스. Git 파일 폴더Git 파일 폴더)를했습니다.C:\Program Files\GitAvast 제외 목록으로 이동하면 Linux에서 실행되는 것과 동일한 속도로 실행됩니다.

네, 안티바이러스 소프트웨어는 원래 게시물에서는 문제가 되지 않았지만 누군가에게 도움이 될 수 있도록 여기에 두겠습니다.

조합된 답변:

  1. Wilbert's - PS1에 포함할 정보
  2. sinelaw's -(<branch_name>) ★★★★★★★★★★★★★★★★★」(<sha>)
# https://unix.stackexchange.com/questions/140610/using-variables-to-store-terminal-color-codes-for-ps1/140618#140618
# https://unix.stackexchange.com/questions/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")"

# https://stackoverflow.com/questions/4485059/git-bash-is-extremely-slow-in-windows-7-x64/19500237#19500237
# https://stackoverflow.com/questions/4485059/git-bash-is-extremely-slow-in-windows-7-x64/13476961#13476961
# https://stackoverflow.com/questions/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}\] $ '

결과:

프롤로

는 【Git Bash】키로 .Start in:%HOMEDRIVE%%HOMEPATH%( [ Git Bash ][ properties ])이치노

은 ' 한다'는을 지적하는 것입니다.%HOME%만약 없다면 환경변수로 설정할 수 있고 Git Bash는 번개처럼 빨라야 합니다.

Windows 7 x 64에서 Git for Windows(msysgit)를 실행하는 것과 같은 문제가 꽤 오랫동안 있었습니다.

여기나 다른 곳에서 읽은 내용을 보면, 공통적인 주제는 관리자 권한이나 UAC의 부족인 것 같습니다.시스템 상에서 UAC가 꺼져 있기 때문에 프로그램 파일 디렉토리에 무언가를 쓰거나 삭제하려고 한다는 설명이 가장 타당합니다.

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

츠키노「 」에 인스톨 되어 ,Program Files (x86)제한된 사용자로서 권한이 없는 디렉토리입니다만, 같은 문제는 없는 것 같습니다.

이것은, 아마, 파일을 기입/삭제하는 장소나 1.7에서 1.8로의 업그레이드에 있어서, 포터블 버전이 다소 보수적이기 때문이라고 생각합니다.어떤 것이 원인인지 정확히 밝히려고 하지는 않을 것입니다. Bash를 포함하여, 이제 훨씬 더 잘 작동한다고 말할 수 있습니다.

제 경우 Avast 바이러스 대책으로 Git Bash가 발생했고 PowerShell도 느려졌습니다.

처음에 10분 동안 Avast를 비활성화하고 속도가 향상되는지 확인했습니다.그 후 Avast에서 읽기, 쓰기, 실행을 위해 Git Bash 설치 디렉토리 전체를 예외로 추가했습니다. 는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★.C:\Program Files\Git\*.

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

(7) 윈도우의 Git(7)에 .git status checkout ★★★★★★★★★★★★★★★★★」add ★★★★★★★★★★★★★★」git commit시간이 걸렸다.

이 문제의 근본 원인을 찾는 중이지만 저장소를 새 폴더로 복제하여 문제를 해결했습니다.

많은 사람들이 말했듯이, 이것은stashGit 2.18.0 이후 Windows instra는 stash - https://github.com/git-for-windows/build-extra/pull/203의 훨씬 빠른 내장 버전의 실험적인 기능을 위한 옵션이 있습니다.

저도 비슷한 상황을 겪었는데 Active Directory와 관련된 문제였고 vpn 뒤에 앉아 있었습니다.

반년 동안 그렇게 일한 끝에 이 금을 찾았습니다.http://bjg.io/guide/cygwin-ad/

으로 은 '비활성화'를 하는 것 입니다.db/etc/nsswitch.conf디렉토리에서 수 에서 (git 디렉토리에서 찾을 수 있습니다.passwd ★★★★★★★★★★★★★★★★★」group뭇매를 맞다

# Begin /etc/nsswitch.conf
passwd: files
group: files
db_enum: cache builtin
db_home: cygwin desc
db_shell: cygwin desc
db_gecos: cygwin desc
# End /etc/nsswitch.conf

로컬 비밀번호 및 그룹 설정을 한 번 업데이트합니다.

$ mkpasswd -l -c > /etc/passwd
$ mkgroup -l -c > /etc/group

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

  • 의 ★★★★ls -l명령어가 느렸다(실행하는 데 약 3초가 걸렸다)
  • 후의 임의의 " " " "ls -l명령어가 즉시 실행되었지만 이전 명령어로부터 45초 이내에 실행되었을 경우에만 해당됩니다.

프로세스 모니터에 의한 디버깅에서는 모든 명령어 전에 DNS 요구가 있었습니다.

따라서 방화벽(내 경우 Comodo)을 비활성화하고 명령을 실행하면 문제가 사라집니다.방화벽을 다시 켰을 때 다시 돌아오지 않습니다.가능한 한 빨리 이 응답을 업데이트하여 DNS 요청을 차단하는 프로세스와 대상이 무엇인지 자세히 설명합니다.

문제 가지 시도를 , GIT PS1의 저속화에 .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
    ...

Stack Overflow post PS1 라인에서 git의 현재 브랜치컬러정상적으로 동작합니다.다시 빠른 Git 명령줄을 사용합니다.

언급URL : https://stackoverflow.com/questions/4485059/git-bash-is-extremely-slow-on-windows-7-x64

반응형