कैसे जारी रखने के लिए गिट लॉग बनाने के लिए संकेत नहीं है?


92

मेरे पास git रिपॉजिटरी के कुछ जोड़े हैं जो एक साथ हैं, और उन पर लूप करने के लिए सरल बैच / बैश फ़ाइल है। मैं अक्सर एक लॉग कमांड के साथ उन पर लूप करता हूं कि वे जल्दी से किस स्थिति में हैं। यह अच्छी तरह से काम करता है, केवल एक चीज को छोड़कर: यदि प्रतिबद्ध संदेश वर्णों की संख्या से अधिक है, तो मेरा कंसोल चौड़ा है (या कई लाइनें हैं), git लाइन को दिखाता है, फिर (END) के साथ एक नई लाइन और मुझे जारी रखने के लिए q को दबाना होगा (मुझे लगता है कि यह आउटपुट को अधिक या कुछ के माध्यम से पाइप करता है)। उदाहरण:

> gitloop . "git log --decorate=short --pretty=oneline -n1"
18629ae238e9d5832cb3535ec88274173337a501 (HEAD, origin/master, master) short log

625fb891b9b0b8648459b07ace662ae3b7773c7f (HEAD, origin/master, origin/HEAD, master) short log

dc0838118266ba8570ea338c1faddfe8af0387bb (HEAD, origin/work, origin/master, work, master) oops loooooooooooooong log
-(END)

यह बल्कि असुविधाजनक है क्योंकि मुझे एक-दो बार q को दबाना पड़ता है , जबकि मैं सिर्फ एक बार में उन सभी oneliners को देखना चाहूंगा।

मैं इस व्यवहार को कैसे अक्षम कर सकता हूं (इस लॉग प्रारूप को रखते हुए भी अधिमानतः)?


जवाबों:


154

Git में पेजर को निष्क्रिय करने का विकल्प है:

git --no-pager log --decorate=short --pretty=oneline -n1

यदि आपका पेजर लाइनों को काटता है और आप उस व्यवहार को बनाए रखना चाहते हैं, तो पाइप को cut...

git --no-pager log --decorate=short --pretty=oneline -n1 | cut -c 1-$COLUMNS

... या GIT_PAGERनिमंत्रण से पहले पर्यावरण चर सेट करें :

GIT_PAGER="cut -c 1-${COLUMNS-80}" git --no-pager log --decorate=short --pretty=oneline -n1

क्या --no-pagerजरूरत पड़ने पर इस विकल्प के लिए शॉर्टकट पर डिफ़ॉल्ट या उससे भी बेहतर बनाने का कोई तरीका है ? मैंने इसके gitnpलिए सचेत करने के बारे में सोचा git --no-pager, लेकिन मुझे लगता है कि एक बेहतर उपाय है।
इस्लाम अज़ब

1
@IslamAzab, आप उर्फ सकता gitकरने के लिए /usr/bin/git --no-pagerजो अपने सभी Git कॉल के लिए पेजर को निष्क्रिय होगा।
मैर्कगैग

1
@ArrenP gitने पेजर में नहीं बनाया है। इसके बजाय, यह यूनिक्स दर्शन का अनुसरण करता है और आपके पास जो कुछ भी है, उसका उपयोग करता है $PAGERgitबस हमेशा $PAGERऐसा करने के बजाय उपयोग करता है कि केवल यादृच्छिक रूप से कई अन्य खराब लिखित टूल के विपरीत। केवल जादू gitहै कि अगर है $LESSहै परिभाषित नहीं है, यह परिभाषित करेगा $LESSमूल्य के लिए FRX। अधिक जानकारी के लिए github.com/git/git/blob/master/Documentation/config.txt#L766 के आसपास देखें।
मिकको रेंटालिनेन

@WarrenP gitबस एक ओवरराइड प्रदान करता है जो GIT_PAGERआपको PAGERजब भी गिटिंग पेजिंग की आवश्यकता होती है , तब कस्टम मूल्य को परिभाषित करने की अनुमति देगा ।
मिकको रैंटलैनेन

1
सरलतम मामला जो व्यवहार को ठीक करने के लिए ठीक करता है: GIT_PAGER = cat
Stragulus

16

सबमिशन का उपयोग करते समय विशेष रूप से पेजर को स्थायी रूप से अक्षम करने की समस्या का एक और समाधान log:

  • केवल वर्तमान रेपो के लिए:
    git config pager.log false

  • आपके git इंस्टालेशन के लिए (यानी आपकी मशीन पर सभी रिपोज):
    git config --global pager.log false

जैसा कि आप अनुमान लगा सकते हैं, अगर वही काम करता है जो पेजर को कुछ अन्य उप-क्षेत्रों के लिए चालू या बंद करने की आवश्यकता होती है ।
ई। जी। के लिए branch(जो शाखाओं को प्रिंट करता है) यह सब-कॉम्प्लेक्स होगा

git config pager.branch false


प्रस्तावित समाधान यकीनन तुलनात्मक रूप से अधिक सुरुचिपूर्ण है

  • git --no-pagerहर बार जब आप कुछ कमांड चलाते हैं, तो उसका उपयोग करना ।
    क्योंकि, बहुत संभव है, आप इसे हर बार टाइप नहीं करना चाहते।

  • क्योंकि, बहुत संभव है, के git --no-pagerलिए एक उपनाम के रूप में निर्दिष्ट git
    करना, आप अंतर्निहित वैश्विक कॉन्फ़िगरेशन से बचना चाहते हैं या आप चाहते हैं कि पेजर कुछ मामलों में सक्षम हो।

  • कुछ पर्यावरण चर जैसे PAGERया पर भरोसा करते हैं GIT_PAGER
    क्योंकि ऐसा करने के लिए, आपको यह सुनिश्चित करने की आवश्यकता है कि वे आपके वर्तमान टर्मिनल सत्र में सेट हैं। और, यदि आप चाहते हैं कि जब भी आपका नया टर्मिनल बनाया जाता है, तो वे हर बार कुछ कस्टम वैल्यू पर सेट हो जाएं, तो आपको शेल-बूटस्ट्रैप्ड फ़ाइलों में से किसी एक को बदलना होगा ~/.bashrc। यह कोई बड़ी समस्या नहीं है। लेकिन इन बूटस्ट्रैप्ड फ़ाइलों को अक्सर अन्य अनुप्रयोगों द्वारा बदल दिया जाता है और इसमें अन्य सामान का गुच्छा होता है, न कि केवल गिट द्वारा उपयोग किया जाता है। इसलिए, सिद्धांत रूप में, git configउदाहरण के लिए उन्हें डालने के बजाय गिट-संबंधित सेटिंग्स को निर्दिष्ट करना बेहतर है ~/.bashrc


अक्षम करने के लिए वैकल्पिक समाधान pagerके लिए सभी subcommands निर्दिष्ट करने के लिए है catउपयोगिता Git पेजिंग के लिए इस्तेमाल करेगा के रूप में:

  • git config core.pager cat या
  • git config --global core.pager cat

मेरा जवाब कुछ हद तक नीचे दिए गए विवरण का है:
"गिट को एक पेजर का उपयोग करने से रोकें?"
https://stackoverflow.com/a/6986231/6103242

यह एक और प्रासंगिक चर्चा को इंगित करने के लिए संदर्भित है।


3

सभी आदेशों के लिए पेजर अक्षम करें:

git config --global core.pager '' 

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.