2010-11-19 15 views
21

मुझे आमतौर पर गिट में पेजर का उपयोग पसंद है, लेकिन git stash पेजर मुझे परेशान करता है। git stash list पर कॉल करते समय, मैं पेजर में आउटपुट की तीन पंक्तियों को नहीं दिखाना चाहता - यह मुझे q दबाता है ताकि फोल्व-अप git stash pop कमांड टाइप करते समय आउटपुट को फिर से अनुपलब्ध कर सकें।स्टेश कमांड के लिए गिट में पेजर को बंद करना केवल

एक समाधान

git --no-pager stash list 

उपयोग करने के लिए होगा, लेकिन इतना टाइपिंग (मैं आलसी हूँ) है। man page of git config के बाद, मैं

git config --global pager.stash false 

कोशिश की, लेकिन यह क्या प्रलेखन कहते हैं प्रतीत नहीं होता है (वास्तव में, मैं कोई असर नोटिस नहीं किया था)। फिर मैंने कोशिश की

git config --global alias.stash "--no-pager stash" 

फिर से किसी भी उल्लेखनीय प्रभाव के बिना।

विन्यास ठीक से उदाहरण

git config pager.stash 
false 

यह सिर्फ कोई असर नहीं करता है के लिए अद्यतन हो जाता है,। मैं क्या खो रहा हूँ? और मैं यह कैसे प्राप्त कर सकता हूं कि git stash पेजर का उपयोग नहीं करता है?

+0

क्या आपके पास कोई अन्य पेजर-संबंधित कॉन्फ़िगरेशन है? स्टैश मेरे लिए पेजर का उपयोग नहीं करता है। – Cascabel

+0

हड़ताल कि: सूची उपcommand वास्तव में अंकन करता है, और कॉन्फ़िगरेशन को अनदेखा करता है। – Cascabel

+1

नीचे मेरा उत्तर देखें: 'git config --global pager.stash false' काम नहीं कर रहा था गिट 1.7.7.3 और उसके बाद में एक बग तय किया गया था। – cbowns

उत्तर

9

यह स्टैश की तरह दिखता है, और किसी भी अन्य गैर-निर्मित कमांड (सी में बजाए शेल स्क्रिप्ट के रूप में लिखा गया है) पेजर कॉन्फ़िगरेशन चरण पर चूक जाता है। मैंने इस बारे में पूछने वाली गिट मेलिंग सूची में एक नोट भेजा; ऐसा लगता है कि यह एक ज्ञात मुद्दा है, लेकिन ठीक करने के लिए पूरी तरह से तुच्छ नहीं है।

प्राथमिक कारण जो आप अपने उपनाम से कोई प्रभाव नहीं देख रहे हैं वह यह है कि गिट चुपचाप अंतर्निहित आदेशों के लिए उपनामों को अनदेखा करता है; विचार यह है कि आप वास्तव में कभी भी कमांड को कम नहीं करना चाहते हैं। उपनामों को चलाने का मौका मिलने के लिए, आपको इसे stash के अलावा कुछ और नाम देने की आवश्यकता है।

हालांकि, मेरा मानना ​​है कि सरल एलियास को पर्यावरण को प्रभावित करने की अनुमति नहीं है, जिसमें गिट कमांड चलाया जाता है, जिसमें आमतौर पर विकल्प git पर पास किए गए विकल्प शामिल होते हैं। अगर मैं आपके जैसे एक उपनाम का उपयोग करें:

git config alias.foo --no-pager stash 
git foo 
fatal: alias 'foo' changes environment variables 

आपको लगता है कि ऐसा करने के लिए ठीक से चाहते हैं, आप, !git --no-pager stash उपयोग करने के लिए इतना है कि यह एक subshell अंडे और Git reinvoke जाएगा होगा।

एक और अस्थायी फ़िक्स, क्योंकि यह एक शेल स्क्रिप्ट है, सीधे libexec/git-core/git-stash संपादित करना होगा। बस list_stash फ़ंक्शन ढूंढें, और --no-pager विकल्प को git log पर कॉल करने के लिए, या संपूर्ण स्क्रिप्ट को कवर करने के लिए, शीर्ष पर सेट करें।

+0

जानकारी के लिए धन्यवाद और इसे गिट मेलिंग सूची पर लाने के लिए धन्यवाद (मैंने वहां आपके मेल का जवाब भी पढ़ा है)। उपनाम के बारे में: मैंने 'stash' की तुलना में एक अलग नाम भी कोशिश की, लेकिन प्रभाव वही था। आश्चर्यजनक रूप से, मुझे एक त्रुटि संदेश नहीं मिला (संस्करण 1.7.2.3), इसलिए मुझे लगा कि नाम कारण नहीं था। मैं अभी स्क्रिप्ट को पैच कर दूंगा। –

+1

@ सेवन: क्या आपके पास वास्तव में सूची में से एक से अधिक स्क्रीन के स्टैश हैं? या क्या आपका पेजर आउटपुट की एक से कम स्क्रीन के बाद छोड़ नहीं रहा है? – Cascabel

+0

@ सेवन: और मुझे यकीन नहीं है कि आपको यह त्रुटि क्यों नहीं मिलती है। उस चेक को बहुत लंबा, लंबा समय पहले जोड़ा गया था (v1.5.3)। सबहेल ऊर्फ ('! ...') को ठीक काम करना चाहिए, हालांकि, और गिट को संपादित करने से बचें। – Cascabel

23

1.7.7.3, git config --global pager.stash false के अनुसार यह पूरा करता है।

7

वैकल्पिक रूप से आप less कॉन्फ़िगर कर सकते हैं हो, तो उत्पादन के कम से कम एक स्क्रीन की कीमत बाहर निकलने के लिए:

export LESS='-F' 

या, verbosely:

export LESS='--quit-if-one-screen' 

आप अपना Git उत्पादन में रंग है, तो आप ' शायद -r ध्वज पास करना भी चाहेंगे:

export LESS='-F -r' 
+0

यह समाधान पहले ही जेफोमी के उत्तर (किसी भी तरह) के टिप्पणियों में दफनाया गया है। हालांकि, इसे अपने आप के जवाब में रखना अच्छा है। –

+3

यहां काम नहीं करता है (पीटीएस पर xterm) क्योंकि 'कम' छोड़ने के बाद, कम प्रदर्शन के कुछ भी नहीं बचा है, यह पिछले संकेतों को दोहराता है। लेकिन यह tty1 पर "लिनक्स" शब्द पर काम करता है। – lolesque

+0

हाँ, कुछ सिस्टम/टर्मिनल आउटपुट पर गायब हो जाता है क्योंकि यह सब "वैकल्पिक स्क्रीन" पर जाता है और तुरंत वापस स्विच किया जाता है :-('--no-init' जोड़ना मदद कर सकता है। –