केवल पहली पंक्ति के साथ git लॉग आउटपुट कैसे करें?


330

मैं के लिए प्रारूप को अनुकूलित करने की कोशिश कर रहा हूं git log। मैं चाहता हूं कि सभी एक लाइन में दिखाए जाएं। प्रत्येक पंक्ति को केवल प्रतिबद्ध संदेश की पहली पंक्ति दिखानी चाहिए।
मुझे पता चला कि git log --pretty=shortचाल चलनी चाहिए लेकिन मेरे कंप्यूटर पर यह पूर्ण लॉग दिखाता है जैसा git logकि (समय टिकट के अलावा) करता है।

इसके अलावा, मैंने मैनहोल्ड में परिभाषित प्लेसहोल्डर्स का उपयोग करने की कोशिश की । हालाँकि, मुझे लॉग संदेश को छोटा करने की कमांड नहीं मिली। मैंने इस लाइन को आज़माया git log --pretty=format:'%h : %s'जो एक लाइन में शॉर्ट हैश %hऔर पूरा संदेश दिखाती है %s

मैं git version 1.7.3.1.msysgit.0Vista पर उपयोग कर रहा हूँ ।


हो सकता है कि मेरे कमिट मैसेज लिखने के तरीके से इसका कोई लेना-देना हो। यहाँ एक उदाहरण है:

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

इसलिए, दिए गए उदाहरण के साथ मैं केवल Added some functionality.शॉर्टश हैश द्वारा तैयार किए गए आउटपुट होना चाहता हूं ।


1
%sविषय है, पूर्ण संदेश नहीं।
जोश ली

वास्तव में यह बताना कठिन है कि आप वास्तव में क्या चाहते हैं। shortप्रारूप नहीं है , हालांकि (आश्चर्य!), एक लाइन में सब onelineहै। तो onelineऔर %h : %sनहीं कर रहे हैं क्या आप चाहते हैं, क्या उन लोगों के साथ गलत क्या है? विशेष रूप से, %sविषय है, प्रतिबद्ध संदेश की पहली पंक्ति। यह वास्तव में एक छोटा संस्करण होना चाहिए। क्या यह संभव है कि आप संदेश के लिए एक लंबी लाइन के साथ काम कर रहे हैं, और उन्हें किसी तरह से शब्द लपेटकर देख रहे हैं?
कैस्केबेल

आप पूरी तरह से समझते हैं। समस्या यह है कि है onelineऔर %sउत्पादन हम क्या उम्मीद नहीं कर अपने कंप्यूटर पर कम से कम,। मैंने अपने संदेश के उदाहरण के साथ अपनी पोस्ट को अपडेट किया। शायद यह मदद करता है।
JJD

जवाबों:


544

क्या आपने यह कोशिश की है?

git log --pretty=oneline --abbrev-commit

समस्या शायद यह है कि आप पहली पंक्ति के बाद एक खाली लाइन याद कर रहे हैं। ऊपर दिया गया कमांड आमतौर पर मेरे लिए काम करता है, लेकिन मैंने खाली दूसरी पंक्ति के बिना एक कमिट पर परीक्षण किया। मुझे आपके समान परिणाम मिला: संपूर्ण संदेश एक पंक्ति में।

खाली दूसरी पंक्ति git प्रतिबद्ध संदेशों में एक मानक है। आपके द्वारा देखा गया व्यवहार संभवतः उद्देश्य पर लागू किया गया था।

एक कमिट मैसेज की पहली लाइन संक्षिप्त वर्णन करने के लिए होती है। यदि आप इसे एक एकल पंक्ति में नहीं बना सकते हैं तो आप कई का उपयोग कर सकते हैं, लेकिन पहली खाली लाइन से पहले "संक्षिप्त विवरण" होने के लिए git सब कुछ मानता है। onelineपूरे संक्षिप्त विवरण को प्रिंट करता है, इसलिए आपकी सभी 3 पंक्तियाँ।


धन्यवाद! आपने रहस्य सुलझाया: मेरे पास संदेश में पहली पंक्ति के बाद एक खाली लाइन नहीं है, ताकि विषय को बाकी हिस्सों से अलग कर सकूं। फिर भी, यह अच्छा होगा अगर मैं इसे बाहर करने या इसे छोड़ने के लिए स्वतंत्र होगा।
JJD

1
कोई दिक्कत नहीं है। वास्तव में, आप खाली लाइन के लिए स्वतंत्र हैं या नहीं। यदि आप इसे छोड़ देते हैं तो केवल आपका पूरा संदेश संक्षिप्त संदेश बन जाता है। मुझे यह संक्षिप्त विवरण / विस्तृत विवरण पसंद है, और मुझे लगता है कि संक्षिप्त विवरण के लिए एक पंक्ति तक सीमित रहना एक समस्या थी, इसलिए खाली लाइन की आवश्यकता थी। आप हमेशा git logफ़िल्टरिंग स्क्रिप्ट के आउटपुट को पाइप कर सकते हैं , लेकिन मैं वास्तव में खाली लाइन के साथ एक संक्षिप्त विवरण लिखने की वकालत करूंगा।
गौतियर

89
वहाँ भी है git log --oneline --ऑनलाइन "--pretty = oneline --abbrev-प्रतिबद्ध" एक साथ उपयोग के लिए एक अंतर्निहित शॉर्टहैंड है।
जेरेमी लोगन

आप पहले से तैयार हैशटैग से कैसे छुटकारा पा सकते हैं? ऐसा नहीं है कि यह बिट-पैक सुंदर नहीं है। लेकिन बिना cut। यह awkवार्ड होगा ... (BTW गणित Q: भंडारण स्तर पर एक ठीक से एन्कोडेड हफ़मैन अनुक्रम में अगला बिट क्या है, चालू या बंद है? संकेत: यह === 50% है।)
फील्प

7
यह tx था। ओह, भी, मुझे एस से भरा एक पृष्ठ मिला, इसलिए मैंने स्वाभाविक रूप से एक के %लिए जोड़ा '%s'। सी-;
Phlip

158

क्या git log --onelineतुम क्या चाहते हो?


1
मैं नहीं चाहता कि पूरे प्रतिबद्ध संदेश को एक पंक्ति में मिला दिया जाए। मैं केवल प्रत्येक संदेश की पहली पंक्ति देखना चाहता हूं।
JJD

41

एक उपनाम बनाकर बेहतर और आसान गिट लॉग । केवल एक सत्र के लिए एक बार टर्मिनल से नीचे कोड पेस्ट करें। कोड को zshrc या bash प्रोफ़ाइल को स्थिर रखने के लिए पेस्ट करें।

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

उत्पादन

git lg

आउटपुट बदल लाइनों

git lg -p

वैकल्पिक रूप से (अनुशंसित)
इस कोड को वैश्विक .gitconfig फ़ाइल में पेस्ट करें

[alias]
  lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

आगे की पढाई।
https://coderwall.com/p/euwpig/a-better-git-log
एडवांस रीडिंग।
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/


उदाहरण सुंदर प्रारूप का एक अच्छा डेमो है, लेकिन "टर्मिनल के नीचे दिए गए कोड को सिर्फ एक बार पेस्ट करें" गलत लगता है क्योंकि यह "git lg" के लिए एक उपनाम नहीं बनाता है
Drone2537

दूसरों के लिए ध्यान दें, यदि आप इस कमांड को बैच में रखते हैं, तो%% के साथ%, को "" के साथ बदलें। परिणाम = git log --color --graph --pretty=format:"%%Cred%%h%%Creset -%%C(yellow)%%d%%Creset %%s %%Cgreen(%%cr) %%C(bold blue)<%%an>%%Creset" --abbrev-commit %1। आप इस बैट फाइल को बदल-बदल कर लाइन्स पाने के लिए पास कर सकते हैं
धीरज भास्कर


25

आप एक वैश्विक उपनाम को परिभाषित कर सकते हैं ताकि आप अधिक आरामदायक तरीके से एक लघु लॉग इन कर सकें:

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

तब आप इसका उपयोग करके कॉल कर सकते हैं git slog(यदि आपके पास सक्षम है तो यह स्वत: पूर्णता के साथ भी काम करता है)।


8

बिना संदेश के, केवल हैश:

git log --pretty=oneline | awk '{print $1}'

7
यदि आप केवल हैश चाहते हैं ...git log --pretty=format:"%H"
michael_j_ward

यदि आप केवल हैश चाहते हैं तो आप भी उपयोग कर सकते हैं git rev-list HEAD
फैबियो कहते हैं

-8

यदि आप हमेशा git logइस तरह से उपयोग करना चाहते हैं तो आप git alias जोड़ सकते हैं

git config --global alias.log log --oneline

उसके बाद git logजो आम तौर पर छपेगाgit log --oneline


12
यह वास्तव में काम नहीं करता है, क्योंकि (ए git उपनाम अंतर्निहित कमांड नामों को ओवरराइड नहीं कर सकता है) और (बी के आसपास उद्धरण होने की आवश्यकता है "log --oneline")।
मैक्स नानसी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.