Git Bash विंडोज 7 x64 पर बेहद धीमा है


435

मैं एक छोटी सी परियोजना के विकास के दौरान विंडोज और उबंटू दोनों पर गिट का उपयोग कर रहा हूं, अक्सर दोनों के बीच आगे और पीछे फ्लिप करता हूं। मुद्दा यह है कि गिट बैश लगातार धीमा हो जाता है।

जब मैं धीमी गति से कहता हूं, तो मेरा मतलब है कि रनिंग cd8-25 सेकंड से कहीं भी होती है, रनिंग gitकमांड 5-20 सेकंड से लेते हैं, और lsकभी-कभी 30 सेकंड तक ले सकते हैं। कहने की जरूरत नहीं, यह मजेदार नहीं है, अनुत्पादक का उल्लेख नहीं करना है। मुझे पता है कि Git विंडोज पर धीमा है, लेकिन यह हास्यास्पद है।

एक समाधान जो काम किया है - अस्थायी रूप से - मेरे लिए मेरे नेटवर्क कनेक्शन को निष्क्रिय करना है (जैसा कि इस उत्तर में सुझाव दिया गया है ), गिट बैश शुरू करें, और फिर पुन: कनेक्ट करें। कभी-कभी ऐसा करने के बाद भी कुछ दिनों के लिए तेजी से चलना जारी रहता है, लेकिन प्रदर्शन हमेशा अंततः खराब हो जाता है। मैं हफ्तों के लिए बंद और बंद msysgit चर्चा समूह, ढेर अतिप्रवाह, msysgit मुद्दा सूची, आदि के माध्यम से फंस गया है, लेकिन मैं जो समाधान काम करने में सक्षम नहीं किया गया है।

अब तक, मैंने कोशिश की है:

  • वायरस स्कैनर की अपवर्जन सूची में Git और प्रोजेक्ट फ़ोल्डर जोड़ना
  • मेरे वायरस स्कैनर को पूरी तरह से अक्षम करना (कास्परस्की आईएस 2011)
  • यह सुनिश्चित करना कि आउटलुक नहीं चल रहा है (आउटलुक 2007)
  • अन्य सभी अनुप्रयोगों को बंद कर रहा है
  • व्यवस्थापक के रूप में गिट बैश चल रहा है
  • नेटवर्क कनेक्शन को अक्षम करना, गिट बैश शुरू करना और कनेक्शन को अक्षम रखना
  • नेटवर्क कनेक्शन को निष्क्रिय करना, गिट बैश शुरू करना, कनेक्शन को फिर से सक्षम करना (केवल कभी-कभी काम करता है)
  • चल रहा है git gc
  • और ऊपर के संयोजन

मैंने पढ़ा है कि कुछ लोगों को बैश समापन को अक्षम करने में सफलता मिली थी, लेकिन आदर्श रूप से मैं इसे सक्रिय रखना चाहूंगा। Msysgit का संस्करण 1.7.3.1-पूर्वावलोकन20101002 है और OS विंडोज 7 x64 है। लिनक्स पर समान चीजों को चलाना, अनुमानित रूप से, तेज बिजली है। मैं विशेष रूप से लिनक्स का उपयोग करूंगा, लेकिन मुझे विंडोज में सामान चलाने की जरूरत है, (कुछ एप्लिकेशन, परीक्षण आदि) भी।

क्या किसी को भी इसी तरह के मुद्दे का सामना करना पड़ा है? यदि हां, तो अंतर्निहित समस्या क्या थी और समाधान क्या था (यदि कोई हो)?

यह सिर्फ Git रिपॉजिटरी से आगे निकलता है, लेकिन सिर्फ संदर्भ के लिए, मैं जिन Git का उपयोग कर रहा हूं, वे रिपॉजिटरी बहुत छोटी हैं: ~ 4-50 फाइलें अधिकतम।


1
आपको हतोत्साहित करने के लिए नहीं, लेकिन सिग्विन x64 पर बहुत धीमा है, आप इसे बेहतर तरीके से विंडोज एक्सपी 32 बिट पर आज़माते हैं।
इस्माइल


5
एक ही प्रणाली पर, यह एक आधा साल पहले धीमा नहीं था। उन्होंने कुछ बदला होगा ...
टॉम ज़ातो - मोनिका

2
लगभग सभी मशीनों पर यहाँ: Kaspersky AV बड़े पैमाने पर धीमा हो जाता है और "Kaspersky" अक्षम हो जाता है, avp.exe अभी भी पूरी तरह से बाहर निकलने के बाद भी चलता है। Kaspersky का पूर्ण पुनर्स्थापना आमतौर पर बाद की समस्या को ठीक करता है।
पेटेरचेन

2
इस पर msysgit का विकी पेज देखें: github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-slow
ड्रू नोक

जवाबों:


409

आप कुछ कॉन्फ़िगर विकल्प सेट करने के लिए तीन कमांड चलाकर विंडोज पर गिट को काफी तेज कर सकते हैं:

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 यूएसी मुद्दों को ठीक करता है ताकि आपको व्यवस्थापक के रूप में गिट चलाने की आवश्यकता न हो (अद्यतन: विंडोज 2.8 के लिए जीआईटी में डिफ़ॉल्ट रूप से सक्षम)

  • gc.auto .git / में फ़ाइलों की संख्या को कम करता है


मेरी मदद नहीं की, लेकिन नीचे दिए गए निर्यात PS1 = '$' की मदद की। इसलिए मुझे पता है मेरे लिए समस्या टर्मिनल लाइन है।
कोश्मार

67
2017 में पूरी तरह से बेकार सेटिंग्स (git 2.12) क्योंकि यह सब सामान डिफ़ॉल्ट रूप से सक्षम है। लेकिन गिट अभी भी धीरे धीरे गंदगी की तरह काम करता है।
ieXcept

2
विंडोज 10 पर भी बढ़िया काम करता है। अच्छी तरह से किया और इस @shoelzer के लिए धन्यवाद!
जो

1
256 तक फाइलें सीमित करने से कुछ समस्याएं हो सकती हैं। और पहले दो विकल्प पहले से ही गिट के नए संस्करणों पर सक्षम हैं।
nPcomp

@sonyvizio किस तरह की समस्याएं?
शॉइलर

102

क्या आपके पास बैश प्रॉम्प्ट में Git जानकारी दिख रही है? यदि हां, तो शायद आप अनजाने में हर कमांड पर बहुत अधिक काम कर रहे हैं। इस सिद्धांत का परीक्षण करने के लिए बैश में निम्नलिखित अस्थायी परिवर्तन का प्रयास करें:

export PS1='$'

11
समस्या यह है $(__git_ps1)... इसे हटाने से सब कुछ सुपरफास्ट हो जाता है
हेंडी इरावन

10
हमारे बीच निर्जन के लिए, यह वास्तव में क्या करता है? आप कहते हैं कि यह "अस्थायी" है, हम कमांड को वापस कैसे लाते हैं?
अमर ब्लू

5
मेरी प्रदर्शन समस्याओं को भी ठीक किया। स्थायी रूप से ठीक करने के लिए, C:\Program Files (x86\Git\etc\profileयदि तत्पश्चात __git_ps1जोड़ा गया है , तो संपादित करें और टिप्पणी करें PS1
टॉम

6
वर्तमान संस्करण 2.18.0 में मैं / आदि / प्रोफाइल में __git_ps1 कमांड ढूंढ सकता हूं। क्या यह कहीं और चला गया है?
कीनाबेल

8
ऐसा लगता है कि C: \ Program Files \ Git \ etc \ profile.d \ git-prompt.sh पर स्थानांतरित हो गया है। मैंने उस फ़ाइल में __git_ps1 टिप्पणी की और यह बहुत तेज़ी से चला गया (लेकिन शीघ्र ही शाखा जानकारी खो दी)
मियागी

85

मेरी विंडोज होम निर्देशिका नेटवर्क पर है, और मुझे संदेह था कि Git Bash कमांड पहले देख रहे थे। पर्याप्त रूप से, जब मैंने देखा $PATH, तो यह /h/binपहले सूचीबद्ध किया गया था, जहां /hविंडोज फ़ाइल सर्वर पर एक हिस्सा है, भले ही /h/binमौजूद नहीं है।
मैंने /etc/profileनिर्यात कमांड को संपादित किया और टिप्पणी की जो इसे पहले रखता है $PATH:

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

इसने मेरी आज्ञाओं को बहुत तेजी से चलाया, शायद इसलिए कि गैट बैश अब निष्पादन के लिए पूरे नेटवर्क में नहीं दिख रहा है। मेरे /etc/profileथा c:\Program Files (x86)\Git\etc\profile


6
मेरी भी यही समस्या थी। मैं बदल HOME="$(cd "$HOME" ; pwd)"गया HOME="$(cd "$USERPROFILE" ; pwd)", और अब सब कुछ धधक रहा है। पारितोषिक के लिए धन्यवाद।
जॉन सागर 18

2
मैं इस भिन्नता का उपयोग करते हुए सफल रहा: प्रोफ़ाइल में, $ USERPROFILE को $ HOME, $ HOMEDRIVE संदर्भ हटाकर। Git Bash शॉर्टकट के गुणों पर भी, "प्रारंभ करें" को% USERPROFILE% पर सेट करें
Aidan Ryan

11
इसने अधिकांश भाग के लिए मेरा मुद्दा तय किया, लेकिन कम से कम 2.7.2 के रूप में Git के साथ मैंने पाया कि /etc/profile.d/env.sh में निर्यात सीधे / etc / प्रोफ़ाइल फ़ाइल के बजाय।
जारेड सिरिला

15
बहुत बहुत धन्यवाद, मेरे लिए एक ही समस्या है, हालांकि मैंने इसे अपने होम डायरेक्टरी की ओर इशारा करते हुए होम नामक एक (उपयोगकर्ता) पर्यावरण चर बनाकर तय किया है। अगर $ HOME मौजूद नहीं है, तो जाहिरा तौर पर git bash USERPROFILE% पर डिफ़ॉल्ट होगा। इसके बाद, गिट बश तेजी से बिजली है।
JHH

6
एकमात्र विकल्प जिसके लिए काम किया गया था वह टिप्पणियों में वर्णित @JHH था। होम नामक एक विंडोज यूजर एनवायरनमेंट वैरिएबल जोड़ें और अपनी इच्छित होम डायरेक्टरी को परिभाषित करें। (नियंत्रण कक्ष -> सिस्टम -> उन्नत सिस्टम सेटिंग्स -> पर्यावरण चर)
Renren

45

मैंने पाया कि नेटवर्क ड्राइव प्रदर्शन की समस्या थी। HOMEएक धीमे नेटवर्क शेयर की ओर इशारा कर रहा था। मैं ओवरराइड नहीं कर सकता था HOMEDRIVEलेकिन जो मैंने देखा है उससे कोई समस्या नहीं है।

डेस्कटॉप पर अपने कंप्यूटर पर राइट क्लिक करके पर्यावरण चर सेट करें -> गुण -> उन्नत सिस्टम सेटिंग्स -> पर्यावरण चर उपयोगकर्ता चर अनुभागों में जोड़ें

HOME=%USERPROFILE%

4
यह काम किया। सभी के लिए जो नेटवर्क की समस्या है, यह वास्तविक समाधान है। आपको किसी भी कॉन्फ़िग फ़ाइल को संपादित करने की ज़रूरत नहीं है, बस होम पॉइंट बनाएं जहां उसे होना चाहिए।
कार्लोस कैला

1
% USERPROFILE% के रूप में Env User Var गृह को परिभाषित करने से काम नहीं चला। मैंने सिस्टम VAR: HOME = C: \ Users \ myUserName को परिभाषित किया
colin_froggatt

मेरे लिए काम किया! धन्यवाद। मैंने @colin_froggatt जैसा कुछ किया, लेकिन इसके बजाय उपयोगकर्ता परिवेश चर में, घर = C: \ Users \ myUserName
Ð ..

22

क्रिस डोलन के उत्तर के विस्तार में, मैंने निम्नलिखित वैकल्पिक PS1सेटिंग का उपयोग किया । बस अपने ~ / .profile पर कोड टुकड़ा जोड़ें (विंडोज 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\]
$ '

यह एक रंगीन शेल और वर्तमान शाखा के नाम (यदि एक गिट रिपॉजिटरी में) के प्रदर्शन को बनाए रखता है, लेकिन यह मेरी मशीन पर ~ 0.75 s से 0.1 s तक काफी तेज है।

यह इस ब्लॉग पोस्ट पर आधारित है ।


बहुत बढ़िया जवाब। हालाँकि मैंने अपने ~ / .bashrc में '__git_ps1 ()' को फिर से परिभाषित करने का फैसला किया है, और बस खाली स्ट्रिंग प्रिंट करें। यह सभी बैश कमांड को गति देता है।
अंजुकेन

मैं एक शुरुआत कर रहा हूँ, मैं जानना चाहता हूँ कि इस fast_git_ps1 और मूल सुंदर जटिल __git_ps1 के बीच क्या अंतर है। मुझे लगता है कि यह सबसे "सामान्य" मामलों के लिए काम करेगा, लेकिन क्या सामान्य है और यह कहाँ असफल होगा?
सूंदर -

मुझे ऐसे मामलों की जानकारी नहीं है जहां यह विफल हो जाएगा। मैंने पहले __git_ps1 का उपयोग किया था, लेकिन प्रदर्शन के मुद्दों पर ध्यान दिया, इसलिए मैंने प्रदर्शित जानकारी निकालने के लिए git को कम काम करने की कोशिश करने के लिए घेर लिया।
विल्बर्ट

2
मूल __git_ps1में स्थिति की जानकारी शामिल है, न कि केवल शाखा का नाम। उदाहरण के लिए, यदि आप एक अलग सिर की अवस्था में हैं, git dir में, नंगे रेपो में, चेरी पिकिंग या रीसैसिंग या मर्जिंग के बीच में ... यह तेज होगा, लेकिन ऐसे मौके भी हो सकते हैं, जहां आप चूक जाएंगे। यह अतिरिक्त जानकारी, विशेष रूप से Git शुरुआत के रूप में।
ड्रू नोक

22

जबकि आपकी समस्या नेटवर्क-आधारित हो सकती है, मैंने git statusदो संशोधनों के द्वारा व्यक्तिगत रूप से मेरे स्थानीय कॉल को दस गुना (two०० एमएस से नीचे network सेकंड) तक फैला दिया है। यह is०० एमबी रिपॉजिटरी पर २१,००० फाइलों और अत्यधिक संख्या में बड़ी बाइनरी फाइलों के साथ है।

एक समानांतर इंडेक्स प्रीलोड्स को सक्षम कर रहा है। कमांड प्रॉम्प्ट से:

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

मैंने यूएसी और "लुफ़व" ड्राइवर (रिबूट आवश्यक) को भी अक्षम कर दिया। यह विंडोज विस्टा, 7 और 8 में एक ड्राइवर को निष्क्रिय कर देता है जो सिस्टम स्थानों पर लिखने की कोशिश करने वाले कार्यक्रमों को रीडायरेक्ट करता है और इसके बजाय उन तक पहुंच को एक उपयोगकर्ता निर्देशिका में पुनर्निर्देशित करता है।

यह कैसे Git प्रदर्शन को प्रभावित करता है पर एक चर्चा देखने के लिए, यहां पढ़ें: https://code.google.com/p/msysgit/issues/detail?id=320

इस ड्राइवर को निष्क्रिय करने के लिए, regedit में, ड्राइवर को अक्षम करने के लिए "प्रारंभ" कुंजी HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/luafvको 4 पर बदलें । फिर, यूएसी को इसकी सबसे कम सेटिंग पर रखें, "कभी सूचित न करें"।

यदि इस ड्राइवर को अक्षम करने से आप सावधान हो जाते हैं (यह चाहिए), तो एक विकल्प आपके सिस्टम विभाजन से अलग ड्राइव (या विभाजन) पर चल रहा है। जाहिरा तौर पर ड्राइवर केवल सिस्टम विभाजन पर फ़ाइल एक्सेस पर चलता है। मेरे पास एक दूसरी हार्ड ड्राइव है और समान परिणाम देखें जब मेरे सी ड्राइव पर इस रजिस्ट्री संशोधन के साथ चलते हैं जैसा कि मैं बिना डी ड्राइव पर करता हूं।

यह परिवर्तन time git status2.5 सेकंड से लेकर 0.7 सेकंड तक होता है।

आप यह भी देखना चाह सकते हैं कि https://github.com/msysgit/git/pull/94 और https://github.com/git/git/com/d637d1b9a8fb765a8542e69bd2e4b3e229f663b Windows में गति संबंधी समस्याओं के लिए अतिरिक्त कार्य चल रहा है या नहीं। ।


10
यह केवल 1968 में यूनिक्स में एक सरल और सुरुचिपूर्ण तरीके से हल की गई समस्याओं के लिए, फिर भी, मूर्खतापूर्ण और अल्पज्ञात Microsoft समाधानों पर प्रकाश डालता है। Microsoft के ब्लोट और रिफ्लेक्टरिंग / फ्लेक्सिबिलिटी / की कमी से उत्पादन, प्रयास और समय कितना बर्बाद हो गया है दुनिया भर में दुस्साहस?
v.oddou

20
मुझे याद है कि 68 में git का उपयोग करना, यह शानदार था।
चार्ली ब्राउन

2
एक साल पहले हाहा लिनस के आसपास आया था
@CharlieBrown

1
डिफ़ॉल्ट रूप से git 2.1 में सक्षम है stackoverflow.com/a/24045966/4854931
Alex78191

18

ऐसा प्रतीत होता है कि जीआईटी को पूरी तरह से अनइंस्टॉल करना, फिर से शुरू करना (क्लासिक विंडोज इलाज), और जीआईटी को फिर से इंस्टॉल करना इलाज था। मैंने उन सभी बैश कॉन्फिग फाइलों को भी मिटा दिया, जो बचे थे (वे मैन्युअल रूप से बनाए गए थे)। सब कुछ फिर से तेज है।

यदि किसी कारण से पुनर्स्थापना संभव नहीं है (या वांछनीय), तो मैं निश्चित रूप से क्रिस डोलन के जवाब में संदर्भित PS1 चर को बदलने की कोशिश करूंगा ; इसके परिणामस्वरूप कुछ कार्यों में महत्वपूर्ण स्पीडअप हुआ।


3
बिना रीस्टार्ट किए रीइंस्टॉल करने से काम नहीं चला, अनइंस्टॉल-रीस्टार्ट-इंस्टॉल काम किया। धन्यवाद! यह जानना अच्छा होगा कि क्यों और कैसे बैश इतना धीमा हो गया, हालांकि।
गौथियर

रीबूट के बीच री-इंस्टॉलेशन से मेरे बीच कोई फर्क नहीं पड़ा।
रयानडब्ल्यू

@RyanW मुझे डर है कि मैं ऊपर दिए गए समाधान से आगे मेरी मदद नहीं कर सकता, लेकिन जब से यह मुद्दा स्थायी रूप से तय नहीं हुआ है, तब तक आप msysgit के अनुरक्षकों के साथ संपर्क में रहना चाहते हैं और देख सकते हैं कि क्या वे आंकड़ा कर सकते हैं इस मुद्दे का कारण है।
मिथुन १४

3
कौन सी बैश कॉन्फिग फाइल्स को आपने बिल्कुल मिटा दिया?
स्कॉट

3
यह उत्तर का समाधान नहीं है। जब आपने अनइंस्टॉल किया और पुनः स्थापित किया तो कुछ कॉन्फिग फाइल बदल गई होगी, वे परिवर्तन उत्तर हैं। यदि आप केवल कहते हैं कि पुनः स्थापित करना समाधान है तो यह गलत है। अन्य लोग अनइंस्टॉल कर सकते हैं और फ़ाइलों को पुनर्स्थापित और कॉन्फ़िगर कर सकते हैं और यही कारण है कि यह सभी के लिए काम नहीं करेगा।
कार्लोस कैला

10

मैंने "रन ऐज एडमिनिस्ट्रेटर" के साथ cmd.exe को शुरू करके विंडोज 7 x64 पर अपनी धीमी Git समस्या को हल किया।


10
सवाल गिट बैश के बारे में बात करता है।
1

2
आप व्यवस्थापक के रूप में गिट बश चला सकते हैं; जो UAC समस्या का संकेत दे सकता है
krosenvold

3
वाह, व्यवस्थापक के रूप में विशाल गति सुधार चलाने वाला बैश
ईविल ई

मुझे यकीन नहीं है कि इस जवाब में सिर्फ 6 वोट हैं। मुझे लगता है कि इस जवाब से समस्या पूरी तरह हल हो गई। इसमें बड़ी तेजी से सुधार हुआ है।
विनोथ

2
@ vinoth10 ठीक है, वहाँ के साथ समस्या है, तुम्हें पता है, व्यवस्थापक के रूप में चल रहा है। जो कई कारणों से एक बुरा विचार है, और कई कॉर्पोरेट उपयोग मामलों के लिए एक विकल्प नहीं है। उपयोगकर्ता को ऊपर उठाकर प्रदर्शन की समस्या का समाधान एक भयानक समाधान है।
JHH


6

जैसा कि क्रिस डोलन और विल्बर्ट के उत्तरों में बताया गया है, PS1 आपको धीमा कर देता है

पूरी तरह से अक्षम करने के बजाय (जैसा कि डोलन द्वारा सुझाया गया है) या विल्बर्ट द्वारा पेश की गई स्क्रिप्ट का उपयोग करके, मैं एक "गूंगा पीएस 1" का उपयोग करता हूं जो बहुत तेज है।

यह उपयोग करता है (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\]# '

मेरे साइग्विन पर, यह विल्बर्ट के "fast_Git_PS1" उत्तर - 200 एमएस बनाम 400 एमएस से अधिक तेज है , इसलिए यह आपके शीघ्र सुस्ती से थोड़ा दूर हो जाता है।

यह उतना परिष्कृत नहीं है __git_ps1- उदाहरण के लिए यह प्रॉम्प्ट को तब परिवर्तित नहीं करता है जब आप .it डायरेक्टरी, आदि में cd करते हैं, लेकिन सामान्य रोजमर्रा के उपयोग के लिए यह काफी अच्छा और तेज है।

इसे Git 1.7.9 (Cygwin पर परीक्षण किया गया था, लेकिन इसे किसी भी प्लेटफ़ॉर्म पर काम करना चाहिए)।


आप --shortविकल्प का उपयोग भी नहीं कर सकते हैंrefs/heads/
friederbluemle

@friederbluemle, git का कौन सा संस्करण उपयोग कर रहे हैं? मेरा (1.7.9) कमांड के --shortलिए प्रस्ताव नहीं करता है symbolic-ref
sinelaw

अलग प्रमुखों के लिए त्रुटियों जब किसी भी Git रेपो बाहर, और काम करने के लिए नहीं मुद्रित करने के लिए अपडेट किया गया
sinelaw

मैं 1.8.4 (msysgit) का उपयोग कर रहा हूं
फ्राइडेरब्लुमेले

6

आप निम्नलिखित Git कॉन्फ़िगरेशन को बदलकर बहुत ही शानदार प्रदर्शन को बढ़ावा दे सकते हैं:

git config --global status.submoduleSummary false

git statusविंडो 7 x64 पर साधारण कमांड चलाते समय , मेरे कंप्यूटर को चलाने में 30 सेकंड से अधिक समय लगा। इस विकल्प को परिभाषित करने के बाद, कमांड तत्काल है।

निम्नलिखित पृष्ठ में बताए अनुसार Git के अपने अनुरेखण को सक्रिय करने से मुझे समस्या की उत्पत्ति का पता लगाने में मदद मिली, जो आपकी स्थापना में भिन्न हो सकती है: https://github.com/msysgit/msysgit/wiki/Diagnosing-why-Git-is-so-so धीमा


5

मुझे Git Bash और Git GUI दोनों में एक ही समस्या थी। दोनों कार्यक्रम अच्छी तरह से चलाने के लिए उपयोग करते हैं, लेकिन फिर वे बेतरतीब ढंग से एक क्रॉल तक धीमा हो गए, और मैं यह पता नहीं लगा सका कि क्यों।

जैसा कि यह निकला, यह अवास्ट था। अवास्ट ने विभिन्न कार्यक्रमों (मेरे द्वारा लिखे गए कार्यक्रमों सहित) के लिए अजीब चीजें पैदा की हैं, इसलिए मैंने इसे एक सेकंड के लिए अक्षम कर दिया, और निश्चित रूप से पर्याप्त है, बैश अब लिनक्स पर जितनी तेजी से चलता है। मैंने अभी Git प्रोग्राम फाइल्स फोल्डर ( C:\Program Files\Git) को अवास्ट अपवर्जन सूची में जोड़ा है , और अब यह उतनी ही तेजी से चलता है जितना कि लिनक्स पर।

और हाँ, मुझे एहसास है कि एंटीवायरस सॉफ्टवेयर मूल पोस्ट में मुद्दा नहीं था, लेकिन मैं इसे यहां डालूंगा अगर यह किसी के लिए उपयोगी है।


4

इन अन्य उत्तरों के अलावा, मैंने समानांतर सबमॉड्यूल लाने (2016 की शुरुआत में जीआईटी 2.8 के बाद से) का उपयोग करके कई सबमॉड्यूल्स के साथ प्रोजेक्ट तैयार किए हैं।

इसके साथ git fetch --recurse-submodules -j8और सेट किया जा सकता है git config --global submodule.fetchJobs 8, या फिर आपके पास कई कोर हैं जो आप उपयोग करना चाहते हैं।


2

यदि आप Git को cmd से प्रयोग करते हैं, तो इसे Git Bash से चलाने का प्रयास करें। Cmd में, git.exe वास्तव में एक आवरण है जो हर बार इसे शुरू करने पर सही वातावरण सेट करता है, और उसके बाद ही वास्तविक git.exe लॉन्च होता है। इसमें दो बार तक का समय लग सकता है, जितना कि आप जो चाहते हैं उसे करने के लिए आवश्यक है। और Git Bash शुरू होने पर ही पर्यावरण की स्थापना करता है।



2

संयुक्त उत्तर:

  1. विल्बर्ट की पीएस 1 में क्या जानकारी शामिल है
  2. sinelaw's - (<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 / प्रोजेक्ट्स / एल्म-मैथ-किड्स (मास्टर) $


इसे किसी भी तेजी से नहीं बनाया गया
कीनाबेल

इस समय मैं देखेंगे पर @keinabel core.commitGraph=trueसे blogs.msdn.microsoft.com/devops/2018/06/25/... से और अन्य blogs.msdn.microsoft.com/devops/tag/git
rofrol

2

मैं एक ही समस्या का सामना कर रहा हूँ Git for Windows (msysgit) विंडोज 7 x64 पर सीमित उपयोगकर्ता खाते के रूप में काफी समय से।

मैंने यहां और अन्य स्थानों पर जो पढ़ा है, उससे लगता है कि सामान्य विषय प्रशासनिक विशेषाधिकार और / या यूएसी की कमी है। चूंकि यूएसी मेरे सिस्टम पर बंद है, इसलिए यह स्पष्टीकरण कि यह प्रोग्राम फ़ाइलों की निर्देशिका में कुछ लिखने / हटाने की कोशिश कर रहा है, मेरे लिए सबसे अधिक समझ में आता है।

किसी भी स्थिति में, मैंने जिप इंस्टालर के साथ जीआईटी 1.8 के पोर्टेबल संस्करण को स्थापित करके मेरी समस्या का समाधान किया है। ध्यान दें कि मुझे .7z वितरण फ़ाइल को अनपैक करना पड़ा है और इसे ज़िप फ़ाइल के रूप में रिपीकेट करने के लिए रिपीकेटर के रूप में काम करना है। मुझे उस निर्देशिका को अपने सिस्टम पथ पर मैन्युअल रूप से जोड़ना था।

प्रदर्शन अब ठीक है। हालांकि इसमें स्थापित हैProgram Files (x86) निर्देशिका , जिसे मेरे पास सीमित उपयोगकर्ता के रूप में अनुमति नहीं है, यह एक ही समस्या से ग्रस्त नहीं है।

मैं इसे इस तथ्य के रूप में बताता हूं कि पोर्टेबल संस्करण थोड़ा अधिक रूढ़िवादी है जहां यह फाइलों को लिखता है / हटाता है, जो कि संभवतः मामला है, या 1.7 से 1.8 तक अपग्रेड करना है। मैं यह बताने की कोशिश नहीं करने जा रहा कि कौन सा कारण है, यह कहने के लिए पर्याप्त है कि यह अब बेहतर काम करता है, जिसमें बैश भी शामिल है।


1
UAC को बंद करना हमारे लिए समस्या का "बड़ा" भाग (बहु-द्वितीय विलंब) हल करना प्रतीत होता है। Ps1 हैक ने बाकी काम किया।
क्रोसनवॉल्ड

वही मैं SSD, 32GB RAM और क्वाड कोर i7 पर हूं और किसी भी अन्य उत्तर में मदद नहीं की, अक्षम UAC, पुनरारंभ और git कमांड INSTANT हैं
phil_lgr

2

मेरे मामले में, यह वास्तव में अवास्ट एंटीवायरस था जो गिट बैश के लिए अग्रणी था और यहां तक ​​कि पावरशेल वास्तव में धीमा हो रहा था।

मैंने पहली बार 10 मिनट के लिए अवास्ट को अक्षम करने की कोशिश की, यह देखने के लिए कि क्या यह गति में सुधार हुआ है और यह किया है। बाद में, मैंने अवास्ट में रीड, राइट और एक्सक्यूट के अपवाद के रूप में पूरे गिट बैश इंस्टॉलेशन डायरेक्टरी को जोड़ा। मेरे मामले में था C:\Program Files\Git\*


मैं इस टिप्स की पुष्टि करना चाहता हूं। अवास्ट से बाहर निकलें वास्तव में बात तेजी से बनाते हैं। मैं अब इंतजार किए बिना गिट स्थिति देख रहा हूं। विन 7 x64
फजरहॉक

एंटीवायरस केवल हस्तक्षेप करते हैं।
एलेक्स।

1
धन्यवाद, यह निश्चित रूप से एक त्वरित जीत थी! 10 मिनट के लिए अक्षम एवास्ट, गिट प्रदर्शन में एक त्वरित बदलाव (यानी सामान्य निष्पादन समय पर वापस) देखा।
मार्सेलो रोमानी

इस समाधान ने मेरे लिए काम किया। McAfee + विंडोज 10 एंट।
फ्रैक्टलस्पेस

1

उपरोक्त कुछ भी मेरी मदद करने में सक्षम नहीं था। मेरे परिदृश्य में मुद्दा खुद को इस तरह दिखा रहा था:

  • कोई भी llकमांड धीमी थी (निष्पादित होने में लगभग 3 सेकंड का समय लग रहा था)
  • किसी भी बाद की llकमांड को तुरंत निष्पादित किया गया था, लेकिन केवल अगर पिछले ls कमांड से 45 सेकंड के भीतर

जब यह प्रक्रिया मॉनिटर के साथ डिबगिंग के लिए आया था तो पाया गया कि प्रत्येक कमांड से पहले DNS अनुरोध था।

इसलिए जैसे ही मैंने अपने फ़ायरवॉल (मेरे मामले में कोमोडो) को निष्क्रिय कर दिया और कमांड को निष्पादित करने की अनुमति दी, समस्या समाप्त हो गई। और यह वापस नहीं लौट रहा है जब फ़ायरवॉल को वापस स्विच किया गया था। जल्द से जल्द अवसर के साथ मैं इस प्रतिक्रिया को अपडेट करूंगा कि अवरुद्ध DNS अनुरोध क्या प्रक्रिया कर रहा था और लक्ष्य क्या था।

बी आर, जी


llके लिए एक उपनाम है log? यह अजीब लगता है कि इसके लिए डीएनएस अनुरोध होंगे।
माइकल - कहाँ का क्ले शिर्क

1
llके लिए एक उपनाम है ls -l। और वैसे भी DNS अनुरोध को ट्रिगर करना अभी भी अजीब है ... इस बीच मैं अभी भी इस मुद्दे के जवाब में अधिक विवरण जोड़ने के लिए फिर से प्रकट होने की प्रतीक्षा कर रहा हूं।
जॉर्ज

1

मेरे मामले में, Git Bash शॉर्टकट सेट किया गया था Start in:%HOMEDRIVE%%HOMEPATH%(आप Git Bash पर क्लिक करके और संपत्तियों का चयन करके इसे जांच सकते हैं)। यह नेटवर्क ड्राइव था।

इसका समाधान यह है कि इसे इंगित किया जाए %HOME%। यदि आपके पास यह नहीं है, तो आप इसे पर्यावरण चर में सेट कर सकते हैं और अब Git Bash को बिजली की तेजी से होना चाहिए।


मुझे लगता है कि इस जवाब में अधिक वोट होने चाहिए। मैं यहाँ इसी सिफारिश को पोस्ट करने के लिए आया था, लेकिन देखा कि आपने मुझे पहले ही हरा दिया था।
जॉन

0

मेरे पास 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
    ...

स्टैक ओवरफ्लो पोस्ट PS1 लाइन से गिट करंट ब्रांच और रंगों के साथ और यह ठीक काम करता है। फिर से एक तेज Git कमांड लाइन है।


तो आपकी समस्या आपके द्वारा लिखी गई स्क्रिप्ट के कारण हुई थी? हो सकता है कि उस स्क्रिप्ट का कारण बनने की संभावना नहीं है, अन्य उपयोगकर्ताओं के लिए जो एक ही समस्या की खोज करते हैं ...
जोल्टा

ओपी प्रश्न पर एक नज़र डालें - उन्होंने बहुत सारी चीजों का उल्लेख किया, जिनकी उन्होंने जांच की थी, और अभी भी यह नहीं था। वही मेरे साथ था। इसलिए यहां मैंने एक और चीज जोड़ दी जब कुछ भी मदद नहीं करता है। और यह यह विशिष्ट स्क्रिप्ट नहीं है जिसे मैंने लिखा है कि यह महत्वपूर्ण है, लेकिन एक अवधारणा - अपने PS1 को देखें।
कोषमार

0

मेरा एक सहकर्मी विंडोज (7) पर गिट के साथ परेशान था git status checkoutऔर addतेज था, लेकिन git commitउम्र ले ली।

हम अभी भी इसके मूल कारण का पता लगाने की कोशिश कर रहे हैं, लेकिन रिपॉजिटरी को एक नए फ़ोल्डर में क्लोन करने से उसकी समस्या ठीक हो गई।


0

जैसा कि कई ने कहा, यह stashविंडोज पर एक शेल स्क्रिप्ट होने के कारण है , लेकिन Git 2.18.0 के बाद से विंडोज इंस्टॉलर के पास बहुत तेज (~ 90%) के प्रयोगात्मक फीचर के लिए एक विकल्प है, जो स्‍टैश का वर्जन है - https: / /github.com/git-for-windows/build-extra/pull/203


इससे मदद मिलती है stash, लेकिन आपका पहला पोस्ट stashविशेष रूप से उल्लेख कर रहा है । क्या यह अन्य गिट संचालन को प्रभावित करता है?
माइकल - जहां

जहां तक ​​मेरी समझ है, नहीं। पूर्वावलोकन में Tthere 2 प्रायोगिक विशेषताएं हैं जो बेहतर प्रदर्शन के लिए देशी निष्पादन योग्य का उपयोग stashऔर / या करने की अनुमति देती हैं, rebaseलेकिन पूर्वावलोकन में किसी भी चीज के साथ हमेशा एक छोटा मौका होता है कि एक छोटा दुष्प्रभाव हो सकता है।
bergmeister

1
PS यह सुविधा पूर्वावलोकन में v 2.19.1 से बाहर चली गई, इसलिए आपको इसके लिए कोई विकल्प नहीं मिलता है
bergmeister
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.