एक मर्ज के माता-पिता को git में कैसे प्राप्त करें?


140

कुछ गिट कमांड माता-पिता को संशोधन के रूप में लेते हैं; अन्य (जैसे कि git revert), एक मूल संख्या के रूप में। माता-पिता दोनों मामलों के लिए कैसे प्राप्त करें। मैं ग्राफ़िकल लॉग कमांड का उपयोग नहीं करना चाहता क्योंकि अक्सर दूसरे माता-पिता को खोजने के लिए एक लंबे पेड़ को नीचे स्क्रॉल करना पड़ता है।

जवाबों:


179

git log <hash>मर्ज कमिट के लिए बुलाए गए सरल अपने माता-पिता की संक्षिप्त हैश दिखाता है:

 $ git log -1 395f65d
 commit 395f65d438b13fb1fded88a330dc06c3b0951046
 Merge: 9901923 d28790d
 ...

git माता-पिता को उनकी संख्या के अनुसार आउटपुट: पहला (सबसे बाएं) हैश पहले माता-पिता के लिए है, और इसी तरह।

यदि आप चाहते हैं कि सिर्फ हैश हो, दो समान विकल्प हैं:

$ git log --pretty=%P -n 1 <commit>
$ git show -s --pretty=%P <commit>

git rev-list माता-पिता के हैश को भी दिखा सकता है, हालांकि यह पहली बार एक प्रतिबद्ध के लिए हैश की सूची देगा:

$ git rev-list --parents -n 1 <commit>

आप माता-पिता की जांच करना चाहते हैं, तो आप के रूप में कैरेट के साथ सीधे उन्हें का उल्लेख कर सकते <commit>^1हैं और <commit>^2:, जैसे

git show <commit>^1

यह सामान्यीकरण करता है; एक ऑक्टोपस मर्ज के लिए आप n वें माता-पिता को संदर्भित कर सकते हैं <commit>^n। आप सभी माता-पिता के साथ उल्लेख कर सकते हैं <commit>^@, हालांकि यह तब काम नहीं करता है जब किसी एकल प्रतिबद्ध की आवश्यकता होती है। अतिरिक्त प्रत्यय n प्रदर्शित हो सकती है वें माता पिता वाक्य रचना (जैसे <commit>^2^, <commit>^2^@,), जबकि वे नहीं कर सकते के बाद ^@( <commit>^@^मान्य नहीं है)। इस सिंटैक्स पर अधिक जानकारी के लिए, rev-parseमैन पेज पढ़ें ।


1
मेरे स्वयं के प्रश्न का उत्तर देते हुए: 'git rev-list --parents -n 1 <somehash>' के परिणाम हैं: <somehash> <parent1> <parent2>। यानी, माता-पिता एक नंबर के हैं।
— मिकमेकाना

आप git- माता-पिता github.com/danielribeiro/dotfiles/blob/master/bin/git-parents का भी उपयोग कर सकते हैं । बस इसे अपने पेट में डालें और $ git माता-पिता को बुलाएं <प्रतिबद्ध> (<प्रतिबद्ध> डिफॉल्ट्स टू हेड)
— डैनियल रिबेरो

@ जेफ्रोमी, मैं वास्तव में चाहता हूं कि "यह भी ध्यान दें कि सामान्य लॉग आउटपुट दिखाता है ..." भाग आपके उत्तर के शीर्ष पर होगा। :)
— एडम मोंसेन

3
git logऔर git showकेवल एक माता-पिता होने पर बहुत अलग चीजों का उत्पादन करते हैं। git logयदि आप एकरूपता चाहते हैं तो प्राथमिकता दें।
— नोएल याप

यह उत्तर मेरे उबंटू मशीन पर काम नहीं करता है git (v2.17.1)। मुझे आउटपुट Mergeमें फाइल नहीं दिख रही git log -1है।
— मेजा

29

एक मर्ज के माता-पिता को देखने का सबसे सरल तरीका निम्नलिखित है

git show --pretty=raw 3706454

14
git cat-file -p 3706454 वही है, लेकिन इससे भी छोटा है :)
— सबजेन्टन

1
ये दोनों बहुत उपयोगी हैं!
— टेकनटूल

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