लघु Git संस्करण हैश प्राप्त करें


381

क्या HEADGit से शॉर्ट वर्जन हैश पाने के लिए कोई क्लीनर तरीका है ?

मैं उसी आउटपुट को देखना चाहता हूं जो मुझे मिलता है:

 git log -n 1 | head -n 1 | sed -e 's/^commit //' | head -c 8

मैंने मूल रूप से उपरोक्त कमांड का उपयोग संस्करण स्ट्रिंग उत्पन्न करने के लिए किया है, लेकिन यह और भी बेहतर है:

git describe --tags

यह आउटपुट तार की तरह होगा 0.1.12(टैग की गई कमिट) या 0.1.11-5-g0c85fbc(टैग के बाद पांच कमिट)।


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

@ MatrixFrog टिप के लिए धन्यवाद! मेरे पास पहले से ही कुछ सरल गिट उपनाम थे, लेकिन मुझे नहीं पता था कि वे अब तक कितने शक्तिशाली हो सकते हैं। मैं विशेष रूप से ग्राफविज़ डिस्प्ले पसंद करता हूं।
अत्तिला ओ।

1
हुह। जब मैं दौड़ता git describe --tagsहूं तो मुझे संदेश मिलता है, "घातक: कोई नाम नहीं मिला, कुछ भी वर्णन नहीं कर सकता।"
क्विन कॉमेंडेंट

@QuinnComenders आपको शायद --tagsकाम करने के लिए पहले कुछ टैग करना होगा। पहले एक टैग बनाने का प्रयास करें ; उदा git tag 1.0.0
अत्तिला ओ।

जवाबों:


696

इसे इस्तेमाल करे:

git rev-parse --short HEAD

कमांड git rev-parseअलग-अलग चीजों की एक उल्लेखनीय संख्या कर सकता है, इसलिए आपको प्रलेखन के माध्यम से बहुत सावधानी से गुजरना होगा


4
आप रिवर्स कर सकते हैं और शॉर्ट कम हैश से निम्न के द्वारा लंबे समय तक हैश कर सकते हैंgit rev-parse HEAD
एंडी

9
कमांड लंबे रेव आईडी के साथ भी काम करता है जो अन्य स्रोतों से कॉपी-पेस्ट किया जाता है git log, जैसे git rev-parse --short 97dd2ae065771908ee9ae0fa08ccdb58b5a6b18fरिटर्न97dd2ae
chiborg

3
यह सिर्फ संदर्भों के साथ काम करता है। आप HEAD, टैग नाम, शाखा नाम या सादे हैश का उपयोग कर सकते हैं।
d12frosted

1
चेतावनी, यह 7 वर्ण वाला हैश (डिफ़ॉल्ट रूप से) देता है, जबकि कई जगह जैसे गिटलैब 8 वर्णों का उपयोग करता है!
मास्टरएक्सिलो

3
आप git rev-parse --short=8 HEADGitLab द्वारा उपयोग की जाने वाली 8 वर्ण लंबाई प्राप्त करने के लिए उपयोग कर सकते हैं । आप core.abbrevएक विशेष git रेपो के लिए 8 को भी सेट कर सकते हैं जैसे git config core.abbrev 8 सोर्स
n8felton


70
git log -1 --abbrev-commit

भी कर लेंगे।

git log --abbrev-commit

संक्षिप्त SHA-1 चेकसम के साथ लॉग प्रविष्टियों को सूचीबद्ध करेगा।


1
दूसरा वही है जिसकी मुझे तलाश थी! याद करने में बहुत सरल और दैनिक जीवन में उपयोगी।
11

इसके साथ भी काम करता है git log --pretty=oneline, जो विपरीत है --oneline, अन्यथा पूर्ण आकार के हैश प्रिंट करता है।
सादाऊ

46

Git प्रतिबद्ध लघु संस्करण और Git प्रतिबद्ध संदेश देखने का एक सरल तरीका है:

git log --oneline

ध्यान दें कि यह शॉर्टहैंड है

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

1
--ऑनलाइन सबसे अच्छा विकल्प है
जुआन इग्नासियो बारिसिच

1
@JuanIgnacioBarisich सबसे अच्छा विकल्प इस बात पर निर्भर करता है कि आपको कितनी जानकारी देखने की आवश्यकता है। यदि किसी को लेखक या तारीख जैसी अधिक जानकारी चाहिए, तो git log --abbrev- कमिट एक बेहतर विकल्प होगा। यह भी लॉग इन करें - व्याख्या करने के लिए एक बेहतर विकल्प हो सकता है कि किस जानकारी को लॉग इन करें
वेग

35

एक बहुत ही सरल तरीका है:

git describe --always

1
हा, स्वीट, उन मामलों को संबोधित करता है, जहाँ git वर्णन अन्यथा विफल हो जाएगा (क्योंकि वर्णन इतिहास में कहीं एक टैग की अपेक्षा करता है) thx
keen

8
अच्छा नहीं है यदि आप कड़ाई से शॉर्ट हैश चाहते हैं - क्योंकि यह एक एनोटेट टैग वापस कर सकता है एक है।
Zitrax

कुछ मामलों में git describe --longमदद कर सकता है। से डॉक्स : "हमेशा उत्पादन लंबे प्रारूप (टैग, प्रतिबद्ध की संख्या और संक्षिप्त प्रतिबद्ध नाम) तब भी जब यह एक टैग का मिलान ।" [मेरा जोर]
djvg

उपयोग करना --longबेहतर है, लेकिन कभी-कभी आपको शॉर्ट हैश और कभी-कभी हाइफ़न द्वारा अलग किए गए 3 आइटम मिलते हैं। इन दिनों, मैं स्वीकृत उत्तर का उपयोग करता हूं। दिन में वापस, मुझे एनोटेट टैग के बारे में नहीं पता था - शायद वे भी मौजूद नहीं थे!
स्टीवन शॉ

16

लघु हैश और अंतिम टिप्पणी के साथ शाखा:

git branch -v

  develop      717c2f9 [ahead 42] blabla
* master       2722bbe [ahead 1] bla

10

मेरे पास निम्नलिखित सेटिंग्स के साथ Git संस्करण 2.7.4 है:

git config --global log.abbrevcommit yes
git config --global core.abbrev 8

अब जब मैं करता हूं:

git log --pretty=oneline

मुझे आठ अंकों की एक संक्षिप्त प्रतिबद्ध आईडी मिलती है:

ed054a38 add project based .gitignore
30a3fa4c add ez version
0a6e9015 add logic for shifting days
af4ab954 add n days ago
...

1
हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन समस्या को हल करने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करने से उत्तर के दीर्घकालिक मूल्य में सुधार होगा।
शेरिलहोमन

1
महान विचार। इसकी सराहना की, शेरिल
डाउन द स्ट्रीम

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