खोजें कि वर्तमान में Git में कौन सा कमिट किया गया है


157

मैं एक git bisectसत्र के बीच में हूं ।

यह पता लगाने की आज्ञा क्या है कि मैं किस समय (SHA1 हैश) हूं? git statusयह प्रदान नहीं करता है।

संपादित करें: मुझे लगता है कि कॉल करना git logऔर पहले प्रवेश कार्यों को देखना है?

जवाबों:


173

आपके पास कम से कम 5 अलग-अलग तरीके हैं, जिन्हें आपने वर्तमान में एक git bisectसत्र के दौरान अपनी कार्यशील प्रतिलिपि में जांच लिया है ( ध्यान दें कि विकल्प 1-4 भी तब काम करेगा जब आप एक बिस्केट नहीं कर रहे हों ):

  1. git show
  2. git log -1
  3. जल्दबाज़ी करो।
  4. git status
  5. git bisect visualize

मैं नीचे प्रत्येक विकल्प के बारे में विस्तार से बताऊंगा।

विकल्प 1: गिट शो

जैसा कि इस बात के सामान्य प्रश्न के उत्तर में बताया गया है कि यह निर्धारित करने के लिए कि आपने वर्तमान में चेक-आउट किया है (न केवल दौरान git bisect), आप पैच आउटपुट को दबाने git showके -sविकल्प के साथ उपयोग कर सकते हैं :

$ git show --oneline -s
a9874fd Merge branch 'epic-feature'

विकल्प 2: गिट लॉग -1

आप केवल यह git log -1पता लगाने के लिए भी कर सकते हैं कि आप वर्तमान में किस प्रतिबद्ध हैं।

$ git log -1 --oneline
c1abcde Add feature-003

विकल्प 3: बैश प्रॉम्प्ट

Git संस्करण 1.8.3+ में (या यह एक पुराना संस्करण था?), यदि आपके पास अपनी बैश प्रॉम्प्ट है जिसे आपने अपनी वर्किंग कॉपी में चेक किया हुआ करंट ब्रांच दिखाने के लिए कॉन्फ़िगर किया गया है, तो यह आपको आपके द्वारा जांचे गए वर्तमान कमेंट को भी दिखाएगा। एक द्विशात सत्र के दौरान या जब आप "अलग" अवस्था में होते हैं। नीचे दिए गए उदाहरण में, मैंने वर्तमान में c1abcdeजाँच की है:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

विकल्प 4: गिट स्थिति

इसके अलावा Git संस्करण 1.8.3+ (और संभवतः पहले, फिर से निश्चित नहीं) के अनुसार, रनिंग git statusआपको यह भी दिखाएगी कि आपने एक द्विशताब्दी के दौरान क्या जाँच की है और जब आप अलग अवस्था में हों:

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

विकल्प 5: गिट बिसैक्ट विज़ुअलाइज़

अंत में, जब आप एक काम कर रहे होते हैं git bisect, तो आप बस लॉन्च करने के लिए git bisect visualizeइसके अंतर्निहित उपनाम git bisect viewका उपयोग या उपयोग कर सकते हैं gitk, ताकि आप ग्राफिक रूप से देख सकें कि आप किस पर प्रतिबद्ध हैं, साथ ही साथ यह भी कहता है कि आपने अभी तक खराब और अच्छा के रूप में चिह्नित किया है। मुझे पूरा यकीन है कि यह संस्करण 1.8.3 से पहले अच्छी तरह से अस्तित्व में है, मुझे यकीन नहीं है कि यह किस संस्करण में पेश किया गया था:

git bisect visualize 
git bisect view # shorter, means same thing

यहां छवि विवरण दर्ज करें


साफ। जब मैंने सवाल पूछा कि मैं जीआईटी 1.8 पर नहीं था, और तब से मैंने अपने आप को एक सही अधिकार-संकेत दिया है जो प्रतिबद्ध हैश दिखाता है, मुझे लगता है कि यह विशेष रूप से संकेतक के लिए विशेष रूप से दिखा सकता है यदि मैं बाइसेक्ट कर रहा हूं, लेकिन मैं ' टी वास्तव में किसी भी अधिक समय के बाद से मैंने यह सवाल पूछा था, ज्यादातर git log -p -S <search>काम करता है।
स्टीवन लू

git statusजब तक आप अलग अवस्था में नहीं होते हैं, तब तक आपको कमिट आईडी नहीं दिखाता है। अन्यथा यह कहता है "शाखा पर जो भी हो "। git showहालांकि काम करता है
किप

87

आप बस कर सकते हैं:

git rev-parse HEAD

थोड़ा और समझाने के लिए: किसी भी विदेशी तरीके कीgit rev-parse व्याख्या करने के लिए git की मूल कमांड है जिसे आप एक कमिट का नाम निर्दिष्ट कर सकते हैं और HEADयह आपके वर्तमान कमिटमेंट या ब्रांच का संदर्भ है। (एक git bisectसत्र में, यह एक शाखा के बजाय सीधे एक कमिट ("अलग किया गया") को इंगित करता है।

वैकल्पिक रूप से (और याद रखने में आसान) बस करना होगा:

git show

... जो कमिटमेंट दिखाने के लिए डिफॉल्ट करता है वह इशारा करता HEADहै। अधिक संक्षिप्त संस्करण के लिए, आप यह कर सकते हैं:

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation

3
यदि आप कहीं और उपयोग के लिए हैश प्राप्त करना चाहते हैं, git rev-parse HEADतो कचरे के सभी विकल्पों के लिए कोई प्रसंस्करण नहीं चाहिए।
निक टी।

17
$ git रेव-पार्स HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

अपडेट करें:

वैकल्पिक रूप से (यदि आपके पास टैग हैं):

(एक संस्करण का नामकरण करने के लिए अच्छा है, वापस जाने के लिए बहुत अच्छा नहीं है।)

$ git वर्णन
v0.1.49-स्थानीय होस्ट-AG-1-g273cf91

या (जैसा कि मार्क ने सुझाव दिया है, पूर्णता के लिए यहां सूचीबद्ध किया गया है):

$ git शो -ऑनलाइन -s
EX0 अभिविन्यास के आधार पर c0235b7 ऑटोरोटेट अपलोड की गई छवियाँ

7
आपने SHA1 के लिए कहा, न कि ऐसी चीज के लिए जिसे याद रखना आसान है। ;-)
अलेक्जेंडर ग्लैडीश

यदि आप किसी स्क्रिप्ट में कुछ जाँच करना चाहते हैं तो यह संस्करण बहुत उपयोगी है
Daniele Licitra

12

यदि आप जानकारी का एक सरल टुकड़ा निकालना चाहते हैं, तो आप विकल्प के git showसाथ इसका उपयोग कर सकते हैं --format=<string>... और यह पूछें कि आपको इसके साथ अंतर नहीं देना है --no-patch। इसका मतलब है कि आप जो भी चाहते हैं उसका प्रिंटफ-स्टाइल आउटपुट प्राप्त कर सकते हैं, जो अक्सर एक ही क्षेत्र हो सकता है।

उदाहरण के लिए, केवल छोटा हैश पाने के लिए ( %h) जो आप कह सकते हैं:

$ git show --format="%h" --no-patch
4b703eb

यदि आप उसे बचाने के लिए बैश में एक पर्यावरण चर में (लोगों के लिए एक संभावित चीज) चाहते हैं तो आप $()सिंटैक्स का उपयोग कर सकते हैं :

$ GIT_COMMIT="$(git show --format="%h" --no-patch)"

$ echo $GIT_COMMIT
4b703eb

आप क्या कर सकते हैंgit show --help की पूरी सूची में है । लेकिन यहाँ गुणों की संक्षिप्त सूची है जो उपयोगी हो सकती है:

  • %H हैश करना
  • %h संक्षिप्त प्रतिबद्ध हैश
  • %T पेड़ हैश
  • %t संक्षिप्त वृक्ष हैश
  • %P माता-पिता की राख
  • %p संक्षिप्त जनक hashes
  • %an लेखक का नाम
  • %ae लेखक का ईमेल
  • %at लेखक की तारीख, UNIX टाइमस्टैम्प
  • %aI लेखक की तारीख, सख्त आईएसओ 8601 प्रारूप
  • %cn कमिट नाम
  • %ce कमिट ईमेल
  • %ct कमिट डेट, UNIX टाइमस्टैम्प
  • %cI कमिट डेट, सख्त आईएसओ 8601 प्रारूप
  • %s विषय
  • %f एक फ़ाइल नाम के लिए उपयुक्त, विषय पंक्तिबद्ध
  • %gD reflog चयनकर्ता, उदा, refs / stash @ {1}
  • %gd छोटा किया गया चयनकर्ता, उदाहरण के लिए, स्टेश @ {1}

उन सभी स्वरूपण विकल्प, लेकिन शाखा केshow लिए कुछ भी नहीं है ।
bvj

2

उपयोग करें git show, जो आपको प्रतिबद्ध संदेश भी दिखाता है, और जब कोई तर्क नहीं दिया जाता है तो वर्तमान प्रतिबद्ध को चूकता है।

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