Git Bash, Windows 7 x64'te son derece yavaş


435

Git'i hem Windows hem de Ubuntu'da küçük bir projenin geliştirilmesi sırasında kullanıyorum, sık sık ikisi arasında gidip geliyor. Sorun Git Bash'ın sürekli yavaşlaması.

Yavaş cddediğimde, koşmanın 8-25 saniye arasında, koşma gitkomutlarının 5-20 saniye sürdüğünü ve lsbazen 30 saniyeye kadar sürebileceğini kastediyorum . Söylemeye gerek yok, bu verimsiz değil, eğlenceli değil. Git'in Windows'ta daha yavaş olduğunu biliyorum, ama bu çok saçma.

Geçici olarak benim için çalışan tek çözüm ağ bağlantımı devre dışı bırakmak ( bu cevapta önerildiği gibi ), Git Bash'i başlatmak ve ardından yeniden bağlanmaktı. Bazen bunu yaptıktan sonra günlerce hızlı bir şekilde çalışmaya devam eder, ancak performans her zaman sonunda düşer. Haftalarca msysgit tartışma grubu, Stack Overflow, msysgit sayı listesi vb. İle açtım ve kapadım, ancak işe yarayan çözümleri açamadım.

Şimdiye kadar denedim:

  • Git ve proje klasörlerini virüs tarayıcının hariç tutma listesine ekleme
  • Virüs tarayıcımı tamamen devre dışı bırakma (Kaspersky IS 2011)
  • Outlook'un çalışmadığından emin olma (Outlook 2007)
  • Diğer tüm uygulamaları kapatma
  • Git Bash'ı yönetici olarak çalıştırma
  • Ağ bağlantısını devre dışı bırakma, Git Bash'i başlatma ve bağlantıyı devre dışı bırakma
  • Ağ bağlantısını devre dışı bırakma, Git Bash'i başlatma, bağlantıyı yeniden etkinleştirme (yalnızca ara sıra çalışır)
  • Koşu git gc
  • Ve yukarıdakilerin kombinasyonları

Bash'in tamamlanmasını devre dışı bırakan birkaç kişinin başarılı olduğunu okudum, ama ideal olarak bunu aktif tutmak istiyorum. Msysgit sürümü 1.7.3.1-önizleme20101002 ve işletim sistemi Windows 7 x64'tür. Aynı şeyleri Linux'ta çalıştırmak tahmin edilebilir bir şekilde hızlıdır. Yalnızca Linux'u kullanırım, ancak Windows'da da bazı şeyler çalıştırmam gerekiyor (belirli uygulamalar, testler vb.).

Benzer bir sorunla karşılaşan var mı? Eğer öyleyse, temel sorun neydi ve çözüm neydi (eğer varsa)?

Bu sadece Git depolarının ötesine uzanır, ancak sadece referans olarak, Git'i kullandığım depolar oldukça küçüktür: maksimum ~ 4-50 dosya.


1
Sizi caydırmak için değil ama Cygwin x64'te çok yavaş, Windows XP 32bit'te denemeniz daha iyi.
ismail


5
Aynı sistemde, yarım yıl önce yavaş değildi. Bir şeyleri değiştirmiş olmalılar ...
Tomáš Zato - Monica'yı yeniden görevlendir

2
Buradaki hemen hemen tüm makinelerde: Kaspersky AV git'i yavaşça yavaşlatır ve "devre dışı bırakma" Kaspersky bozulur, avp.exe tamamen çıktıktan sonra hala çalışır. Kaspersky'nin tamamen yeniden yüklenmesi genellikle ikinci sorunu giderir.
peterchen

Yanıtlar:


409

Bazı yapılandırma seçeneklerini ayarlamak için üç komut çalıştırarak Git'i Windows'da önemli ölçüde hızlandırabilirsiniz:

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

Notlar:

  • core.preloadindex dosya sistemi işlemleri gecikmeyi gizler mi? (güncelleme: Git 2.1'de varsayılan olarak etkindir)

  • core.fscache Git'i yönetici olarak çalıştırmanıza gerek kalmaması için UAC sorunlarını giderir (güncelleme: Windows 2.8 için Git'te varsayılan olarak etkindir)

  • gc.auto .git / içindeki dosya sayısını en aza indirir


Bana yardımcı olmadı, ancak ihracat PS1 = '$' aşağıda belirtildi. Bu yüzden benim için sorunun terminal hattı olduğunu biliyorum.
Koshmaar

67
Tüm bu şeyler varsayılan olarak etkinleştirildiği için 2017'de tamamen işe yaramaz ayarlar (git 2.12). Ama git hala bir bok gibi yavaş çalışıyor.
ie

2
Windows 10'da da harika çalışıyor. Aferin & bu @shoelzer için teşekkürler!
Joe

1
Dosyaları 256 ile sınırlamak bazı sorunlara neden olabilir. Ve ilk iki seçenek git'in yeni sürümlerinde zaten etkinleştirildi.
nPcomp

@sonyvizio Ne tür sorunlar var?
ayakkabıcı

102

Bash isteminde Git bilgisinin var mı? Eğer öyleyse, belki her komutta yanlışlıkla çok fazla iş yapıyorsunuzdur. Bu teoriyi test etmek için Bash'te aşağıdaki geçici değişikliği deneyin:

export PS1='$'

11
Sorun olduğunu $(__git_ps1)... kaldırma bu her şeyi süper hızlı yapar
Hendy Irawan

10
Aramızda olmayanlar için bu komut tam olarak ne yapar? Bunun "geçici" olduğunu söylüyorsun, komutu nasıl geri alabiliriz?
Ölümsüz Mavi

5
Ayrıca performans sorunlarımı da düzelttim. Kalıcı olarak düzeltmek için C:\Program Files (x86\Git\etc\profile, if-then-else __git_ps1öğesinin eklendiği yeri düzenleyin ve yorum yapın PS1.
Tom

6
Geçerli sürüm 2.18.0 __git_ps1 komutunu / etc / profile içinde bulamıyorum. Başka bir yere mi taşındı?
keinabel

8
Görünüşe göre C: \ Program Files \ Git \ etc \ profile.d \ git-prompt.sh. Bu dosyada __git_ps1'e yorum yaptım ve çok daha hızlı gitti (ancak komut isteminde kaybolan şube bilgisi)
Miyagi

85

Windows ana dizinim ağda ve Git Bash komutlarının önce oraya baktığından şüphelendim. Tabii ki, baktığımda, ilk önce $PATHlistelenmişti, ancak Windows dosya sunucusunda bir paylaşım var, ancak mevcut değil. Ben ilk koyar ihracat komutunu düzenledi ve yorum yaptı :/h/bin/h/h/bin
/etc/profile$PATH

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

Bu, komutlarımın çok daha hızlı çalışmasını sağladı, çünkü Git Bash artık ağda çalıştırılabilir dosyaları aramıyor. Benim /etc/profileoldu c:\Program Files (x86)\Git\etc\profile.


6
Aynı sorunu yaşadım. Değiştim HOME="$(cd "$HOME" ; pwd)"için HOME="$(cd "$USERPROFILE" ; pwd)", ve şimdi her şey blazingly hızlıdır. Bahşiş için teşekkürler.
Jon Sagara

2
Bunun bir varyasyonunu kullanarak başarılı oldum: profilde $ HOME için $ USERPROFILE zorlayarak $ HOMEDRIVE referansını kaldırın. Ayrıca Git Bash kısayolunun özelliklerinde, "Start In" öğesini% USERPROFILE% olarak ayarlayın
Aidan Ryan

11
Bu çoğunlukla sorunumu düzeltti, ancak Git en azından 2.7.2'den itibaren doğrudan / etc / profile dosyası yerine /etc/profile.d/env.sh dosyasına aktarım buldum.
Jared Siirila

15
Çok teşekkürler, aynı sorun benim için, ancak ben HOME adlı bir (kullanıcı) ortam değişkeni oluşturarak, düzeltilmiş ana dizin işaret ederek düzeltti. $ HOME yoksa, git bash varsayılan olarak% USERPROFILE% olarak ayarlanacaktır. Bundan sonra git bash hızlı yıldırım.
JHH

6
Çalışan tek seçenek yorumlarda açıklanan @JHH idi. HOME adlı bir Windows kullanıcı ortamı değişkeni ekleyin ve istediğiniz giriş dizinini tanımlayın. (Denetim Masası -> Sistem -> Gelişmiş sistem ayarları -> Ortam Değişkenleri)
RenRen

45

Ağ sürücüsünün performans sorunu olduğunu gördüm. HOMEyavaş bir ağ paylaşımına işaret ediyordu. Geçersiz kılmadım HOMEDRIVEama bu gördüğümden bir sorun değil.

Bilgisayarınızı masaüstünde sağ tıklatarak ortam değişkenini ayarlayın -> özellikler -> Gelişmiş sistem ayarları -> Ortam Değişkenleri Kullanıcı değişkenlerine ekle bölümü

HOME=%USERPROFILE%

4
Bu işe yaradı. Ağ sorunu olan herkes için bu gerçek çözümdür. Herhangi bir yapılandırma dosyasını düzenlemek zorunda değilsiniz, sadece HOME noktasını olması gereken yere yönlendirin.
Carlos Calla

1
Env Kullanıcı Var HOME'u% USERPROFILE% olarak tanımlamak işe yaramadı. SYSTEM VAR'ı tanımladım: HOME = C: \ Kullanıcılar \ myUserName
colin_froggatt

Benim için çalıştı! Teşekkürler. @Colin_froggatt gibi bir şey yaptım ama bunun yerine Kullanıcı Ortamı değişkenlerinde HOME = C: \ Kullanıcılar \ myUserName
Ð ..

22

Chris Dolan'ın cevabının bir uzantısı olarak, aşağıdaki alternatif PS1ayarı kullandım. Kod parçasını ~ / .profile dosyasına eklemeniz yeterlidir (Windows 7'de: 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\]
$ '

Bu, renkli bir kabuktan yararlanır ve geçerli dal adının görüntülenmesini sağlar (Git deposundaysa), ancak makinemde ~ 0.75 s'den 0.1 s'ye kadar önemli ölçüde daha hızlıdır.

Bu, bu blog yayınına dayanmaktadır .


Mükemmel cevap. Ancak ~ / .bashrc içinde '__git_ps1 ()' tanımlamaya karar verdim ve sadece boş dize yazdırın. Tüm Bash komutlarını hızlandırır.
ajukraine

Ben bir başlangıç ​​acemiyim, bu fast_git_ps1 ve orijinal oldukça karmaşık __git_ps1 arasındaki farkın ne olduğunu bilmek istiyorum. Bunun çoğu "normal" vaka için işe yarayacağı fikrini alıyorum, ama normal olan nedir ve bu nerede başarısız olur?
sundar - Monica'yı yeniden

Başarısız olacağı durumların farkında değilim. Daha önce __git_ps1 kullandım, ancak performans sorunları fark ettim, bu yüzden git görüntülenen bilgileri ayıklamak için daha az iş yapmak için uğraştım.
Wilbert

2
Orijinal __git_ps1, yalnızca şube adını değil, durum bilgilerini de içerir. Örneğin, müstakil bir kafa durumunda, git dir, çıplak bir repo, kiraz toplama veya yeniden basma veya birleştirme ortasındaysanız ... Bu daha hızlı olacak, ancak kaçırdığınız durumlar olabilir bu ekstra bilgi, özellikle Git acemi olarak.
Drew Noakes

22

Sorununuz ağ tabanlı olsa da, git statusiki modifikasyon yaparak şahsen yerel çağrılarımı on kat (7+ saniye 700 ms'ye kadar) hızlandırdım . Bu, 21.000 dosya ve çok sayıda büyük ikili dosya içeren 700 MB'lık bir depoda.

Birincisi paralel indeks önyüklemelerini mümkün kılmak Bir komut isteminden:

git config core.preloadindex true
Bu time git status7 saniyeden 2,5 saniyeye değiştirildi.

Güncelleme!

Aşağıdakiler artık gerekli değildir. Düzeltme eki mysysgit 1.9.4 itibarıyla düzeltildi
https://github.com/msysgit/git/commit/64d63240762df22e92b287b145d75a0d68a66988
Ancak, yazarak düzeltmeyi etkinleştirmeniz gerekir
git config core.fscache true

Ayrıca UAC ve "luafv" sürücüsünü de devre dışı bıraktım (yeniden başlatma gerekir). Bu, Windows Vista, 7 ve 8'de sistem konumlarına yazmaya çalışan programları ve bunun yerine bir kullanıcı dizinine yeniden yönlendiren bir sürücüyü devre dışı bırakır.

Bunun Git performansını nasıl etkilediğiyle ilgili bir tartışma görmek için burayı okuyun: https://code.google.com/p/msysgit/issues/detail?id=320

Bu sürücüyü devre dışı bırakmak için, regedit'te "start" tuşunu HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/luafv 4 olarak değiştirin. Ardından, UAC'yi en düşük ayara getirin, "asla bildirmeyin".

Bu sürücünün devre dışı bırakılması sizi endişelendiriyorsa (gerekir), bir sürücü (veya bölüm) üzerinde sistem bölümünüzden farklı bir alternatif çalışıyor. Görünüşe göre sürücü sadece sistem bölümündeki dosya erişimi üzerinde çalışıyor. Ben ikinci bir sabit disk var ve ben D sürücüsünde yaptığım gibi benim C sürücüsünde bu kayıt defteri değişiklik ile çalışırken aynı sonuçları görmek.

Bu değişiklik time git status2,5 saniyeden 0,7 saniyeye kadar sürer.

Windows'ta hız sorunları için hangi ek çalışmanın sürdüğünü kontrol etmek için https://github.com/msysgit/git/pull/94 ve https://github.com/git/git/commit/d637d1b9a8fb765a8542e69bd2e04b3e229f663b adresini de takip etmek isteyebilirsiniz. .


10
bu sadece 1968'de basit ve zarif bir şekilde Unix'te çözülen sorunlara idiotics ve kıskanç Microsoft çözümlerine ışık tutuyor. Microsoft'un şişmesi ve yeniden düzenleme / esneklik / dünya çapında cüret mi?
v.oddou

20
68'de git'i kullandığımı hatırlıyorum, muhteşemdi.
Charlie Brown

2
Haha Linus gelmeden bir yıl önce @CharlieBrown
cchamberlain

1
git 2.1'de varsayılan olarak etkin stackoverflow.com/a/24045966/4854931
Alex78191

18

Git'in tamamen kaldırılması, yeniden başlatılması (klasik Windows kürü) ve Git'in yeniden kurulmasının çaredir. Ayrıca kalan tüm bash yapılandırma dosyalarını da sildim (manuel olarak oluşturuldular). Her şey tekrar hızlı.

Herhangi bir nedenden dolayı yeniden yükleme mümkün değilse (veya arzu edilirse), kesinlikle Chris Dolan'ın cevabında belirtilen PS1 değişkenini değiştirmeyi denerim ; bazı operasyonlarda önemli hızlanmalara neden oldu.


3
Yeniden başlatma olmadan yeniden yükleme işe yaramadı, kaldırma-yeniden başlatma-yükleme çalıştı. Teşekkürler! Yine de bash'ın neden ve nasıl bu kadar yavaş olduğunu bilmek güzel olurdu.
Gauthier

Arada yeniden başlatma ile yeniden kurmak benim için bir fark yaratmadı.
RyanW

@RyanW Korkarım yukarıdaki benim için işe yarayan çözümün ötesine yardım edemem, ancak bu sorun henüz kalıcı olarak çözülmediği için msysgit'in koruyucularla temasa geçmek ve anlayabileceklerini görmek isteyebilirsiniz bu sorunun sebebi.
Gemini14

3
Hangi bash yapılandırma dosyalarını tam olarak sildiniz?
Scott

3
Bu sorunun cevabı değil. Bazı yapılandırma dosyası kaldırılıp yeniden yüklendiğinde, bu değişiklikler yanıttır. Eğer yeniden yüklemenin çözüm olduğunu söylüyorsanız, bu yanlıştır. Diğer kişiler kaldırıp yeniden yükleyebilir ve dosyaları aynı olabilir ve bu yüzden herkes için çalışmaz.
Carlos Calla

10

Windows 7 x64'te yavaş Git sorunumu cmd.exe'yi "Yönetici olarak çalıştır" ile başlatarak çözdüm.


10
Soru git bash hakkında konuşuyor.
manojlds

2
Git bash'ı yönetici olarak çalıştırabilirsiniz; bir UAC sorunu olduğunu gösterebilir
krosenvold

3
Vay, yönetici olarak git bash'ı çalıştıran devasa hız artışı
Evil E

Bu cevabın neden sadece 6 oy aldığından emin değilim. Bence bu cevap sorunu tamamen çözdü. Büyük bir hız artışı var.
vinoth10

2
@ vinoth10 Yönetici olarak çalıştırmayla ilgili bir sorun var. Birçok nedenden dolayı kötü bir fikirdir ve birçok kurumsal kullanım örneği için bir seçenek değildir. Kullanıcıyı yükselterek bir performans sorununu çözmek korkunç bir çözümdür.
JHH


6

Chris Dolan ve Wilbert'in cevaplarında belirtildiği gibi, PS1 sizi yavaşlatır .

Tamamen devre dışı bırakmak (Dolan'ın önerdiği gibi) ya da Wilbert tarafından sunulan senaryoyu kullanmak yerine, çok daha hızlı bir "aptal PS1" kullanıyorum.

Kullanır (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'imde bu, Wilbert'in "fast_Git_PS1" cevabından daha hızlı - 200 ms'ye karşı 400 msn, bu yüzden hızlı halsizliğinizden biraz kurtulun .

Bu kadar sofistike değildir __git_ps1- örneğin .git dizinine vb. Girdiğinizde istemi değiştirmez, ancak normal günlük kullanım için yeterince iyi ve hızlıdır.

Bu Git 1.7.9'da test edildi (Cygwin, ancak herhangi bir platformda çalışması gerekir).


Ayrıca --shortyazdırmama seçeneğini de kullanabilirsinizrefs/heads/
friederbluemle

@friederbluemle, git'in hangi sürümünü kullanıyorsunuz? Mine (1.7.9) sunmamaktadır --shortiçin symbolic-refkomuta.
sinelaw

Herhangi bir git repo'su dışındayken hataları yazdırmamak ve müstakil HEAD'ler için çalışmak üzere güncellendi
sinelaw

1.8.4 (msysgit) kullanıyorum
friederbluemle

6

Aşağıdaki Git yapılandırmasını değiştirerek çok düşük performans artışı da elde edebilirsiniz:

git config --global status.submoduleSummary false

Basit çalıştırırken git statusWindows 7 x64'te komutu bilgisayarımın çalışması 30 saniyeden uzun sürdü. Bu seçenek tanımlandıktan sonra komut hemen gerçekleşir.

Git'in aşağıdaki sayfada açıklandığı şekilde kendi izlemesini etkinleştirmek, sorunun kaynağını bulmanıza yardımcı oldu, bu da kurulumunuzda farklılık gösterebilir: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so- yavaş


5

Hem Git Bash hem de Git GUI'de aynı sorunu yaşıyordum. Her iki program da güzelce çalışıyor, ancak sonra rastgele bir taramaya yavaşladılar ve nedenini bulamadım.

Anlaşıldığı üzere Avast'tı. Avast, çeşitli programlarda (yazdığım programlar dahil) garip şeyler olmasına neden oldu, bu yüzden bir saniye boyunca devre dışı bıraktım ve yeterince eminim, Bash artık Linux'ta olduğu kadar hızlı çalışıyor. Git program dosyaları klasörünü yeni ekledim (C:\Program Files\Git ) Avast hariç tutma listesine ve şimdi Linux'ta olduğu kadar hızlı çalışıyor.

Ve evet, antivirüs yazılımının orijinal yayında sorun olmadığını anlıyorum, ancak birileri için yararlı olması durumunda bunu buraya koyacağım.


4

Bu diğer cevaplara ek olarak, paralel alt modül getirme kullanarak birden fazla alt modüllü projeler hızlandırdım (2016 başında Git 2.8'den beri).

Bu yapılabilir git fetch --recurse-submodules -j8ve ayarlanabilir git config --global submodule.fetchJobs 8veya bununla birlikte kullanmak istediğiniz / kullanmak istediğiniz birçok çekirdek.


2

Git'i cmd'den kullanıyorsanız, Git Bash'ten çalıştırmayı deneyin. Cmd'de git.exe aslında her başlattığınızda doğru ortamı ayarlayan ve ancak sonra gerçek git.exe'yi başlatan bir sarmalayıcıdır. İstediğinizi yapmak için gereken sürenin iki katı kadar zaman alabilir. Git Bash, ortamı yalnızca başladığında kurar.



2

Birleşik cevaplar:

  1. Wilbert's - PS1'e dahil edilecek bilgiler
  2. sinelaw's - (<branch_name>)veya(<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}\] $ '

Sonuç:

frolowr @ RWAMW36650 / c / projeler / elm-math-kids (usta) $


daha hızlı
yapmadım

Ben bakardım Bu anda @keinabel core.commitGraph=trueitibaren blogs.msdn.microsoft.com/devops/2018/06/25/... gelen ve diğer blogs.msdn.microsoft.com/devops/tag/git
rofrol

2

Windows 7 x64'te Windows için Git'i (msysgit) bir süre sınırlı kullanıcı hesabı olarak çalıştırırken aynı sorunla karşılaştım.

Burada ve diğer yerlerde okuduğum kadarıyla, ortak tema idari ayrıcalıkların ve / veya UAC'nin eksikliği gibi görünüyor. Sistemimde UAC kapalı olduğundan, program dosyaları dizinine bir şeyler yazmaya / silmeye çalıştığı açıklaması bana en mantıklı geliyor.

Her durumda, Git 1.8'in taşınabilir sürümünü zipinstaller ile yükleyerek sorunumu çözdüm. Zipinstaller'ın çalışması için .7z dağıtım dosyasını açıp ZIP dosyası olarak yeniden paketlemem gerektiğini unutmayın. Ayrıca bu dizini sistem yoluma manuel olarak eklemek zorunda kaldım.

Performans şimdi iyi. Program Files (x86)Sınırlı bir kullanıcı için izinleri olmayan dizinde yüklü olsa da, aynı sorundan muzdarip görünmüyor.

Bunu, taşınabilir sürümün dosyaları yazdığı / sildiği, muhtemelen durumun biraz daha muhafazakâr olduğu ya da 1.7'den 1.8'e yükselttiği gerçeğine atfediyorum. Bash de dahil olmak üzere şu anda çok daha iyi çalıştığını söylemek için, hangisinin neden olduğunu tespit etmeye çalışmayacağım.


1
UAC'nin kapatılması bizim için sorunun "büyük" kısmını çözüyor gibi görünüyor (çok saniyelik gecikme). Geri kalanı ps1 kesmek yaptı.
krosenvold

Aynı SSD, 32GB RAM ve dört çekirdekli i7 ve diğer cevapların hiçbiri yardımcı
olmadı

2

Benim durumumda, Git Bash'e yol açan Avast antivirüsüydü ve hatta PowerShell bile gerçekten yavaşlıyor.

İlk önce hızı artırıp iyileştirmediğini görmek için Avast'ı 10 dakika boyunca devre dışı bırakmayı denedim. Daha sonra, Git, Bash kurulum dizininin tamamını Avast'ta Okuma, Yazma ve Yürütme için bir istisna olarak ekledim. Benim durumumda C:\Program Files\Git\*.


Bu ipuçlarını onaylamak istiyorum. Git'i Avast'tan hariç tutmak, işi daha hızlı hale getirir. Git durumunu artık beklemeden görüyorum. Kazanmak 7 x64
Fajarhac

Antivirüsler sadece müdahale eder.
Alex78191

1
Teşekkürler, bu kesinlikle hızlı bir kazançtı! Avast 10 dakika boyunca devre dışı bırakıldı, git performansında ani bir değişiklik fark edildi (yani normal yürütme sürelerine geri dön).
Marcello Romani

Bu çözüm benim için çalıştı. McAfee + Windows 10 Ent.
FraktalSpace

1

Yukarıdakilerin hiçbiri bana yardım edemedi. Benim senaryomda sorun şu şekilde kendini gösteriyordu:

  • Herhangi bir llkomut yavaştı (yürütülmesi yaklaşık 3 saniye sürüyordu)
  • Herhangi bir sonraki llkomut anında yürütülür, ancak yalnızca önceki ls komutundan 45 saniye içinde olursa .

Process Monitor ile hata ayıklamaya gelince gelince, her komuttan önce bir DNS isteği olduğu tespit edildi.

Güvenlik duvarımı (benim durumumda Comodo) devre dışı bıraktığımda ve komutun sorunu çalıştırmasına izin vermez gitti. Güvenlik duvarı tekrar açıldığında geri dönmüyor. En erken fırsatta, bu yanıtı hangi işlemin DNS engelleme isteği yaptığını ve hedefin ne olduğunu daha ayrıntılı olarak güncelleyeceğim.

BR G


lltakma ad logmı olmak ? Bunun için DNS istekleri olması tuhaf görünüyor.
Michael - Clay Shirky

1
lliçin bir takma addır ls -l. Yine de bir DNS isteğini tetiklemek hala tuhaf ... Bu arada yine de bu sorunun yanıta daha fazla ayrıntı eklemek için tekrar görünmesini bekliyorum.
George

1

Benim durumumda Git Bash kısayolu olarak ayarlandı Start in:%HOMEDRIVE%%HOMEPATH%(Git Bash'ı sağ tıklayıp özellikleri seçerek bunu kontrol edebilirsiniz). Bu ağ sürücüsüdür.

Çözüm bunu göstermektir %HOME%. Elinizde yoksa, ortam değişkenlerinde ayarlayabilirsiniz ve şimdi Git Bash çok hızlı yanıp sönüyor olmalıdır.


Bence bu cevabın daha fazla oyu olmalı. Bu aynı öneri göndermek için buraya geldim, ama beni zaten lol onu dövdü gördüm.
Jon

0

Ben de git PS1 yavaşlığı ile ilgili sorun vardı, ancak uzun zamandır bir veritabanı boyutu sorunu (büyük depo) olduğunu düşünüyordum ve çeşitli git gchileler deniyordu ve tıpkı sizin gibi başka nedenler arıyorlardı. Ancak, benim durumumda, sorun bu satırdı:

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
}

Doing git statusher komut satırı durum satırında için yavaştı. Ahh. Elle yazdığım bir şeydi. Denediğimde bunun bir sorun olduğunu gördüm

export PS1='$'

burada bir cevapta bahsedildiği gibi. Komut satırı şimşek çakıyordu.

Şimdi bunu kullanıyorum:

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
    ...

Yığın taşması sonrası PS1 satırından git akım dal ve renkleri ile iyi çalışır. Yine hızlı bir Git komut satırı var.


Sorununuz yazdığınız bir senaryodan mı kaynaklandı? Belki de aynı komut dosyasını arayan diğer kullanıcılar için bu komut dosyasının nedeni pek olası değildir ...
Jolta

OP sorusuna bir göz atın - kontrol ettiği birçok şeyden bahsetti ve hala değildi. Aynı şey benimleydi. Burada, hiçbir şey yardımcı olmadığında kontrol edilecek başka bir şey ekledim. Ve yazdığım önemli bir senaryo değil, bir kavram - PS1'inize bakın.
Koshmaar

0

Bir iş arkadaşım Windows (7) üzerinde Git'le ilgili sorun yaşadı git status checkoutve addhızlıydı, ancak git commityaşları aldı.

Hala bunun temel nedenini bulmaya çalışıyoruz, ancak havuzu yeni bir klasöre klonlamak sorunu düzeltti.


0

Birçoğunun dediği gibi, bunun nedeni stashWindows'ta bir kabuk komut dosyası olması, ancak Git 2.18.0'dan beri Windows yükleyicisinin daha hızlı (~% 90) yerleşik stash sürümünün deneysel bir özelliği için bir seçeneği var - https: / /github.com/git-for-windows/build-extra/pull/203 .


Bu yardımcı olur stash, ancak sizinki stashözellikle bahseden ilk yazıdır . Diğer Git işlemlerini etkiler mi?
Michael - Clay Shirky

Anladığım kadarıyla hayır. Önizlemede, daha iyi performans için yerel bir yürütülebilir dosyanın bulunmasına stashve / veya rebasekullanılmasına izin veren 2 deneysel özellik vardır, ancak önizlemedeki herhangi bir şeyle her zaman küçük bir yan etki olma olasılığı küçüktür.
bergmeister

1
PS Bu özellik v 2.19.1'de önizlemeden çıktı, bu yüzden artık bunun için seçenek
almıyorsunuz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.