2012-05-14 10 views
8

काम में हमारे गिट भंडार में एक फाइल है, मैं यह जानना चाहता हूं कि इस फ़ाइल को शाखा में किसने विलय किया है।आप कैसे पाते हैं कि एक शाखा में गिट प्रतिबद्धता किसने विलय किया?

मेरे पास प्रतिबद्ध हैश है जो प्रतिबद्धता की पहचान करता है (फ़ाइल 552a976f1a25f9bad57efb9455e951f6b7b3367f कहता है) जो फ़ाइल पेश करता है, और मुझे पता है कि फ़ाइल staging शाखा पर है।

मैं उस प्रतिबद्धता के हैश को कैसे ढूंढ सकता हूं जो staging शाखा में उपरोक्त प्रतिबद्धता को मिला देता है? मैं उस उपयोगकर्ता को ढूंढना चाहता हूं जो विलय हो गया है, और विलय की तारीख है।

+0

क्या यह एक वास्तविक विलय था (एक फास्ट-फॉरवर्ड विलय के विपरीत)? और क्या आप सिर्फ 'गिट लॉग पथ/to/the/file' (या' gitk') का उपयोग नहीं कर सकते? – svick

+0

गिट लॉग उस व्यक्ति का नाम दिखाता है जिसने फ़ाइल की है, मैं यह जानना चाहता हूं कि स्टेजिंग शाखा पर कौन प्रतिबद्ध है। –

उत्तर

1
git log <commit-id>..<branch> --ancestry-path --merges --reverse 

आपको लगता है कि <commit-id> कि आप वर्तमान स्थिति के में रुचि रखते हैं और कर रहे हैं के बाद से हुआ मर्ज के की सूची दे देंगे <branch>। आपके विलय करने वाले वर्कफ़्लो के आधार पर, जिस मर्ज में आप रुचि रखते हैं वह सूची में या अगले में से एक हो सकता है।

यह ग्राफ के नीचे स्थित अपने <commit-id> के लिए साथ

git log --oneline --graph --decorate --ancestry-path --boundary <commit-id>..<branch> 

देखो इतिहास की प्रासंगिकता का कल्पना करने के लिए उपयोगी होगा (यह हैं "ग्राफ सीमा" के लिए होगा - o बजाय * के साथ चिह्नित) ।

1
git log -1 --merges <hash> 

सबसे हाल ही में मर्ज लॉग प्रतिबद्ध दिखाने के बाद से <hash> (अपने आप सहित) के लिए प्रतिबद्ध होगा।

+1

यह एक बहुत अच्छा समाधान है, कभी-कभी विलय पहला विलय होता है, लेकिन हमेशा नहीं। मेरे मामले में यह दूसरा विलय था जिसे मैं चाहता था। –

+0

'गिट लॉग 'आपको ** से पहले ** दिखाएगा, इसके बाद नहीं (यानी यह के पूर्वजों को दिखाएगा)। तो, यह आदेश पिछली विलय * आपके प्रतिबद्ध * से पहले दिखाएगा, मर्ज नहीं जो इसे मुख्य शाखा में लाया। –

2

branches

अगर मैं तुम्हें सही ढंग से समझ, आप सी 5 है, और आप सी 6 के लिए खोज रहे हैं। यदि यह मामला है, तो आप शायद इस लिए देख रहे हैं:

git rev-list --merges HEAD --not <hash> --reverse 

यह आप करता है जो अपने हैश प्रतिबद्ध के बाद हुआ मर्ज की सूची दे देंगे। मैं इस आदेश में HEAD का उपयोग करता हूं, यह मानते हुए कि आप master पर हैं, उदाहरण में, या staging आपकी स्थिति में।

एक नहीं के लिए भी जटिल वातावरण आप शायद पहले मर्ज जिसके बाद हुआ देख रहे अपने लिए प्रतिबद्ध ... लेकिन आप मौका इस तरह का नहीं है, तो आप की कोशिश कर सकते हैं:

git log --graph --decorate HEAD...<hash>^ 

या किसी भी ग्राफिक उपकरण (जैसे gitk के रूप में) अपने इतिहास का पता लगाने के ...

संबंधित मुद्दे