Git Bash (mintty) este extrem de lent pe Windows 10 OS (Programare, Git, Windows 10, Git Bash, Mingw W64, Mintty)

Rohan Bhatia a intrebat.
a intrebat.

Am instalat Git pe calculatorul meu Windows 10 cu câteva luni în urmă. A funcționat bine pentru o perioadă de timp. Dar acum, funcționează atât de lent.

Site-ul git status comanda durează 7 secunde să se execute, iar git stash durează multe minute pentru stocare (chiar dacă nu este nimic de stocat). De asemenea, aș dori să subliniez că git status tipărește rezultatul instantaneu, dar nu pot introduce o nouă comandă timp de câteva secunde, așa cum se arată în imaginea de mai jos.

Am încercat să navighez pe net pentru a găsi soluții la problema mea de acest gen, acest, , etc. dar niciuna dintre acestea nu a funcționat.

P.S.: Folosesc antivirusul Windows Defender, și acesta este NU face ca Bash-ul meu să fie lent. De asemenea, cmd necesită mai mult timp pentru a fi executat git comenzi, în timp ce git bash are nevoie de mai mult timp pentru a executa orice comandă.


Actualizare: Am trecut la Ubuntu și, prin urmare, nu mai folosesc Windows în prezent. Așadar, nu am cum să verific dacă vreuna dintre soluții funcționează în cazul meu. Accept răspunsul oferit de @pschild deoarece are cel mai mare număr de upvotes și se pare că a funcționat pentru mulți oameni.

Comentarii

  • Se pare că acolo problema se află în setarea promptului bash. Încercați să setați PS1='$ ' astfel încât orice setare fantezistă a promptului să fie dezactivată, apoi vedeți dacă vă este în continuare lent. –  > Por holygeek.
  • @holygeek, mulțumesc că a ajutat… Acum, starea git durează aproximativ 3-4 sec, mai degrabă decât 7. Dar este încă lent, nu? –  > Por Rohan Bhatia.
  • Este vorba doar de GIT? Sunteți pe o unitate de rețea sau pe un SSD? Observați întârzieri aleatorii în timpul utilizării computerului? –  > Por Guillaume F..
  • da, este doar GIT, restul este în regulă. Nu sunt pe o unitate de rețea sau pe un SSD.  > Por Rohan Bhatia.
  • Ca un începător de bounty am dat-o în bară de mult timp atât pe motivul recompensei, cât și pe mesajul personalizat Dezactivarea driverului AMD Radeon mi-a rezolvat problema, dar mă întreb cu adevărat pe de ce parte. ar aprecia un răspuns care să se concentreze pe asta. –  > Por Lafexlos.
12 răspunsuri
pschild

Recent m-am confruntat cu exact aceeași problemă. După ce am încercat toate sfaturile din acest fir și o mulțime de alte fire, am găsit în cele din urmă o soluție aici, , respectiv în problema legată aici.

Dezactivarea driverului grafic AMD Radeon în managerul de dispozitive Windows și trecerea la grafica integrată Intel HD a funcționat pentru mine – indiferent de motiv.

Sper că vă ajută!

În cazul meu, am găsit sh.exe shell să fie semnificativ mai rapid decât bash.exe. Puteți găsi sh.exe în git_install_dir/bin.

Sper că acest lucru îi ajută pe cei care au această problemă în condițiile în care au doar grafică Intel HD integrată!

Comentarii

  • tipule, tocmai mi-ai rezolvat problema, mulțumesc! Nu am idee de ce se întâmplă asta, dar dezactivarea driverului AMD a rezolvat-o și pentru mine. Am înnebunit încercând să-mi dau seama wth se întâmplă :). –  > Por DVM.
  • Omule, îți mulțumesc foarte mult. Mi-am petrecut întreaga zi pentru a face acest lucru să funcționeze. Nu aș fi văzut niciodată asta. –  > Por Ante Braovic.
  • A petrecut 5 zile. și în cele din urmă acest lucru a rezolvat problema. :+1 –  > Por Swagat Swain.
  • Are cineva vreo idee de ce ajută dezactivarea driverului AMD? Mă străduiesc să fac legătura între modul în care driverul afecta performanța lui git bash. Dacă ar trebui să ghicesc, aș presupune că poate are cineva de-a face cu redarea conținutului în fereastra git bash. În caz contrar, așa cum a sugerat @bySamo este un bug în driver? Singura legătură pe care o pot face între driverul AMD și programul git bash este redarea ferestrei. Aveți vreo idee? Cred că ar putea fi ceva legat de solicitările pe care le fac. –  > Por Lsakurifaisu.
  • Bug-ul este că driverul AMD întârzie distrugerea proceselor cu 1 secundă pe proces. (Am identificat bug-ul folosind Process Monitor.) Actualizarea driver-ului rezolvă această problemă. –  > Por nyanpasu64.
Paul Wintz

Pentru mine, soluția a fost să setez variabila HOME la directorul meu de utilizator (conform acestui răspuns). Pentru a face acest lucru (cel puțin pe Windows 7):

  1. Faceți clic dreapta pe „Computer” în exploratorul de fișiere.
  2. Deschideți Setări avansate ale sistemului.
  3. Deschideți Variabilele de mediu
  4. Sub Variabilele de sistem, faceți clic pe „Nou…”
  5. Introduceți „HOME” pentru numele variabilei și calea către directorul de utilizator pentru valoare (de exemplu, „C:Usersjdoe”).

Consultați și răspunsurile la această întrebare conexă.

Comentarii

  • La momentul apariției acestei probleme, aveam deja o variabilă de mediu HOME. –  > Por Rohan Bhatia.
  • Până acum, am revenit la acest răspuns de cel puțin trei ori. Probabil că ceva îmi șterge HOME din când în când… –  > Por Paul Wintz.
  • Problema mea era că dosarul HOME se afla pe un dosar de rețea partajat. Din moment ce că lucrăm în mare parte în VPN, GIT era foarte lent să citească fișierul .gitconfig. Probabil din cauza protocolului lent prin VPN. Acum, că HOME-ul meu se află pe hard disk-ul meu local, totul este din nou rapid. –  > Por Alexandre Jobin.
  • Acest lucru a funcționat pentru mine! Mulțumesc. –  > Por user2756335.
VonC

Încearcă din nou cu:

  • the cel mai recent Git pentru Windows pe care îl puteți găsi, cum ar fi PortableGit-2.12.1-64-bit.7z.exe (descompuneți-l oriunde doriți, fără instalare)
  • apoi, într-un fișier CMD sesiune, setați PATH cu:

    set G=c:pathtolatestgit
    set PATH=%G%bin;%G%usrbin;%G%mingw64bin
    set PATH=%PATH%;C:windowssystem32;C:windowsSystem32Wbem;C:windowsSystem32WindowsPowerShellv1.0
    
  • setați-vă HOME în același CMD sesiune

    set HOME=%USERPROFILE%
    
  • În cele din urmă, tastați bash, , și vedeți dacă vreo operațiune Git este încă lentă.

Comentarii

  • va trebui să dezinstalez ultima mea versiune de git? A fost, de asemenea, 2.12.1, dar acesta nu era git portabil –  > Por Rohan Bhatia.
  • @RohanBhatia Nu; aceasta este o versiune portabilă: pur și simplu decomprimați-o oriunde doriți. Puteți avea mai multe versiuni de Git în acest fel. Doar PATH-ul dvs. trebuie să fie ajustat. –  > Por VonC.
  • @RohanBhatia PATH-ul dvs. include doar folderele Git și System32 Windows? Și este vizualizarea dvs. localizată în unitatea C:? (sau este accesată printr-o cale de rețea partajată?) Starea git durează mult timp într-o sesiune CMD? (a s opus ca o sesiune git bash) –  > Por VonC.
  • puteți vedea variabilele mele de cale și alte variabile de mediu aici. Nu este clar ce vrei să spui prin faptul că vizualizarea este localizată în unitatea c, dar fișierele mele de program și toate celelalte sunt în unitatea C. Da, din păcate, git status durează aproape la fel de mult ca și executarea lui git status sau a oricărei alte comenzi git. –  > Por Rohan Bhatia.
  • @RohanBhatia nu este nevoie de variabila de mediu Windows. Pur și simplu deschideți un CMD, tastați ‘set‘ comenzi pe care le-am menționat, cd la vizualizarea dvs. și încercați un git status acolo (nu este nevoie de bash) –  > Por VonC.
rakwaht

Am avut aceeași problemă o dată și ceea ce am descoperit este că problema pentru mine a fost cu __git_ps1, , practic, o variabilă care include informații despre starecum ar fi numele ramurii, starea capului detașat, în git dir, într-un repo gol, în mijlocul cherry picking-ului sau rebasării sau fuzionării.

Pentru a vă accelera git bash, mergeți la $GitHomeetcprofile și comentați if-then unde __git_ps1 is adăugat la PS1.

Oricum, informațiile pe care le comentezi sunt foarte utile, mai ales dacă ești la început cu GIT. Iată o versiune mai rapidă, găsită pe internet și folosită de mine cu succes pe sistemul meu:

fast_git_ps1 ()                                                                              
{                                                                                            
    printf -- "$(git branch 2>/dev/null | grep -e '* ' | sed 's/^..(.*)/ {1} /')"    
}                                                                                            

PS1='[33]0;$MSYSTEM:w07                                                                
33[32m][email protected] [33[33mw$(fast_git_ps1)33[0m]                                         
$ '     

Comentarii

  • Am vrut să spun că da, ps1 s-a schimbat, dar git este încă lent…  > Por Rohan Bhatia.
  • În mediul meu, a trebuit să editez fișierul $GIT_HOME/etc/profile.d/git-prompt.sh și să elimin linia PS1="$PS1"'``__git_ps1``' (~linia 31). Acest lucru a funcționat ca un farmec. –  > Por bobbel.
  • Tocmai am făcut PS1=’$ ‘ și asta l-a făcut să ruleze mult mai repede pe Windows 10. –  > Por Don Smith.
  • După ore și ore de testare … drivere grafice, setări ale variabilelor de mediu HOME, porniți git bash ca administrator, nimic nu a ajutat. Dar schimbarea promptului PS1 din aplicația mea <git_install_folder>/etc/profile.d/git-prompt.sh pentru a folosi o funcție fast_git_ps1, a început prompt să accelereze. Omiterea părții __git_ps1 din prompt chiar a făcut-o instantaneu, dar informațiile utile despre ramură lipseau atunci…. –  > Por devnull69.
  • Eu am una care este mult mai rapidă. Problema de bază aici se bazează în mare parte pe faptul că se bifurcă mai multe procese de fiecare dată când generează promptul în PS1 variabilă. Soluția este de a folosi bash pur. Vedeți gist aici (și versiunea mea modificată care folosește PROMPT_COMMAND): gist.github.com/Ragnoroct/c4c3bf37913afb9469d8fc8cffea5b2f –  > Por chunk_split.
VonC

Ca răspuns la recompensa lui Lafexlos:

Dezactivarea driverului AMD Radeon a rezolvat problema mea, dar mă întreb cu adevărat în ce parte.
Aș aprecia un răspuns care să se concentreze pe asta.

În ceea ce privește motivul:

Problema 1070 rapoarte.

Aducerea interfeței grafice a setărilor Radeon și apăsarea pe ceva în timp ce așteptați promptul bash eliberează imediat ceva și îl face să apară – ciudat.

AMD a fost contactat, dar nu a primit niciun răspuns…

Acest rapoarte de proiect:

Dar toate ieșirile grafice (terminale) trebuie să fie afișate prin intermediul acestor drivere.
Ei (driverele) își bagă cârligele în toate părțile sistemului cu întreruperi ascunse și time-out-uri și cine știe ce. Tremură…

Problema 1129 adaugă:

Începând cu Windows 7 (poate Vista?), consola a avut capacitatea de a se afișa prin DirectWrite, care este construit pe Direct3D, care depinde în mare măsură de implementările driverului de DirectX API.

În calitate de fost angajat NVIDIA care a lucrat direct la nvd3dum, , nvwgf2umx și nvapi pot să vă spun că am fost destul de sceptici în privința înțelepciunii acestei decizii.
Se pare că AMD ar fi trebuit să fie mai sceptic, poate că calitatea driverilor lor ar fi fost mai bună.

Comentarii

  • Apreciez efortul dvs. de a scrie un răspuns, dar răspunsul cel mai votat are deja aceste link-uri în el, așa că, din păcate, acest lucru nu adaugă nimic nou, cel puțin pentru mine. –  > Por Lafexlos.
Pramod C V

Am avut aceeași problemă pe Windows 7 și Window 10, în timp ce foloseam git bash, orice comandă pe care o executam dura un timp considerabil pentru a se executa. În cele din urmă, după multe încercări de rupt capul, am descoperit că problema se datora faptului că nu îmi executam exe-ul git bash ca administrator, ,

Pași

  1. Faceți clic dreapta pe git bash exe.
  2. faceți clic pe „Run as administrator” (rulează ca administrator)
  3. tastați comenzi precum cd /c/

sper că vă ajută!!!!

Comentarii

  • Asta a funcționat pentru mine, mulțumesc! –  > Por Lore.
Kostiantyn Kolesnichenko

Am încercat tot ceea ce a fost mai sus care a avut vreun sens pentru mine, nu a ajutat.

În sfârșit, se pare că am rezolvat problema. S-a dovedit că Git Credentials Manager pentru Windows încerca să contacteze controlerul de domeniu (care nu este accesibil deoarece nu sunt la birou), iar acest lucru provoca o întârziere mare (30+ secunde) de fiecare dată când doream să, de ex. git checkout.

Pentru a remedia acest lucru, a trebuit doar să dezactivez complet Credentials Manager, acum totul este rezonabil de rapid. Iată cum se dezactivează: Cum pot dezactiva Git Credential Manager pentru Windows?

Sper că acest lucru îi ajută pe cei disperați, sănătate!

mark

Adăugarea excluderii proceselor pentru bash.exe, cmd.exe și conhost.exe în lista de excluderi Windows Defender Exclusions pare să fi rezolvat problema pentru mine pe Windows 10 64bit.

Philip Rego

PATH-ul tău este plin de gunoaie? Comenzile simple îmi luau uneori 20 de secunde sau mai mult până când am eliminat lucrurile inutile din PATH-ul meu.

Windows: echo %PATH%

Căutați „edit environment variables” pentru a schimba.

Altele: echo $PATH

Comentarii

  • pe Windows, acesta este set path btw. –  > Por 1mike12.
  • superuser.com/questions/1070994/… de asemenea, doriți să faceți referire la aceasta aici. Cred că curățarea în special a chestiilor intel, a făcut ca shell-ul meu să fie mai rapid –  > Por Joel.
  • Pe un alt computer Win7 AD, durează 2 secunde de fiecare dată când apăs enter. CMD funcționează rapid. MinGW, Cygwin lent. Grafică Intel. Am încercat toate răspunsurile, mă înnebunește. –  > Por Philip Rego.
csharpfolk

Am o problemă similară, dar numai atunci când am rulat git bash ca utilizator normal, când am pornit git bash ca Administrator toate comenzile au rulat foarte repede.

În cazul meu s-a dovedit că problema a fost cauzată de antivirusul F-Secure. Am adăugat directorul care conține git.exe la lista de directoare excluse (excluse de la scanare) și mi s-a rezolvat problema.

Cum se exclude directorul: https://community.f-secure.com/t5/Business/Excluding-objects-from-Real-Time/ta-p/66013

Comentarii

  • Am avut aceeași problemă timp de săptămâni întregi. Tks! –  > Por Thiago Lunardi.
Xintrea

Pentru mine, problema a fost în software-ul instalat Strawberry Perl.

Foloseam următorul software open-source pentru Windows 10:

  • OpenSSH
  • Putty
  • Git pentru Windows
  • Qt 5.12.6

Dar, instalatorul Qt 5.12.6 vă solicită să instalați Strawberry Perl. Se pare că acest pachet este necesar pentru a automatiza crearea de scripturi de implementare a software-ului. Strawberry Perl are mai multe programe open-source în afară de Perl. Dar, în realitate, în 99% din cazuri, instalarea Strawberry Perl nu este necesară.

Înainte de a dezinstala Strawberry Perl, variabila mea PATH a devenit așa:

PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:WindowsSystem32OpenSSH;C:Program FilesGitcmd;C:Program FilesPuTTY;C:Strawberrycbin;C:Strawberryperlsitebin;C:Strawberryperlbin;C:Usersstepanov_smAppDataLocalMicrosoftWindowsApps;

După dezinstalarea Strawberry Perl, variabila mea PATH a devenit așa::

PATH=C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Usersstepanov_smAppDataLocalMicrosoftWindowsApps;C:WindowsSystem32OpenSSH;C:Program FilesGitcmd;C:Program FilesPuTTY;

Se poate ca Strawberry Perl să suprapună binarele/scripturile din Git pentru Windows. Înainte de a dezinstala Strawberry Perl, comanda git –version s-a executat în 45 de secunde! După dezinstalarea Strawberry Perl, comanda a început să fie executată instantaneu.

dko

Disclaimer: Nu este o soluție. Dar o soluție rapidă de rezolvare.

Dintr-un motiv oarecare, după ce computerul meu a fost actualizat… nu aveam Git bash pe computerul meu, așa că a trebuit să îl reîncarc pe cel nou 2.19.2.windows.1 și am avut aceeași problemă cu fiecare execuție care dura 5-7 secunde.

Nu am avut timp să mă uit în toate link-urile și să dezactivez driverele grafice și ce nu. Dar aveam Git shell instalat cu Github pe computerul meu și l-am scos (Windows PowerShell) și am putut executa imediat tot ce aveam nevoie acolo.