2010-10-22 7 views
32

से उत्पन्न हुई है, मैं दिखाता हूं कि मैंने अपनी मास्टर शाखा से ब्रांच किया था, और फिर मैंने अपनी विषय शाखा में कुछ काम किया। क्या कोई ऐसा आदेश है जो मुझे मास्टर शाखा पर प्रतिबद्ध हैश बताता है कि मेरी विषय शाखा से उत्पन्न हुआ है?गिट प्रतिबद्ध हैश को कैसे ढूंढें जहां शाखा

आदर्श रूप से, मुझे यह नहीं पता होगा कि मैंने कितने काम किए हैं (HEAD^5 से बचने की कोशिश कर रहे हैं)।

मैंने गुगुल किया है और सोया है और उत्तर पर जमीन नहीं लग रहा है। धन्यवाद!

+0

http://stackoverflow.com/questions/2706797/git-finding-what-branch-a-commit-came-from एक शुरुआत हो सकती है, भले ही यह * बिल्कुल * आपका प्रश्न न हो। – VonC

+0

@VonC लिंक के लिए धन्यवाद, जो कुछ मैं चाहता हूं लेकिन यह अच्छी शुरुआत नहीं है – brycemcd

उत्तर

32

दो शाखाओं (आमतौर पर शाखा बिंदु) के बीच सबसे आम पूर्वजों को खोजने के लिए git merge-base master your-branch का उपयोग करें।

+23

@ ब्रिस: ध्यान दें कि यदि आप कुछ मध्यवर्ती विलय करते हैं, तो यह आपको सबसे हालिया आम पूर्वज प्रदान करेगा, जरूरी नहीं कि पहले ब्रांचिंग पॉइंट। – Cascabel

+0

यह अब काम नहीं करता है। मुझे बस उपयोग की जानकारी मिलती है: 'उपयोग: गिट मर्ज-बेस [-ए | --all] ...'। मैं अनुमान लगा रहा हूं कि उपरोक्त आदेश में 'HEAD' जोड़ना सही जवाब देगा। –

+0

क्या कम उत्पादन के लिए कोई विकल्प है? गिट मर्ज-बेस मास्ट my_branch | गिट रेव-पार्स - शॉर्ट हेड –

54

आप git reflog show --no-abbrev <branch name> का उपयोग कर सकते हैं। यह उत्पादन सभी परिवर्तनों शाखा करने के लिए किया जाएगा, यह रचना है, उदाहरण के लिए (मैं master शाखा से शाखा xxx बनाया) सहित:

bdbf21b087de5aa2e78a7d793e035d8bd9ec9629 [email protected]{0}: branch: Created from master 

ध्यान दें कि यह बहुत विश्वसनीय के रूप में reflog रिकॉर्ड (डिफ़ॉल्ट रूप से 90 दिनों की समय सीमा समाप्त नहीं कर सकते है), और ऐसा लगता है कि ऐसा करने के लिए कोई 100% विश्वसनीय तरीका नहीं है।

+0

यह स्वीकार्य उत्तर होना चाहिए। –

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