2012-06-06 5 views
7
  : 
      A 
T  /\ 
i  B C 
m  : : 
e  D E 
      \/
|   F 
V   : 

git merge-base B E के पहले आम बच्चे का पता लगाएं खोजने की अनुमति देता है, जहां एक आम पूर्वज दो प्रतिबद्ध की A। क्या F प्रतिबद्धता खोजने का कोई तरीका है जहां दो शाखाएं फिर से विलय हो जाती हैं?दो करता

+0

यह एक शानदार ग्राफ है, आपने इसे कैसे बनाया? –

+1

क्या होगा यदि एक से अधिक "पहले" आम बच्चे हैं? उदाहरण के लिए, एक प्रतिबद्धता हो सकती है जो बी और ई – svick

+1

का विलय हो सकता है आप इस गिट की तरह कुछ 'गिट रेव-लिस्ट - चाइल्डरेन' आउटपुट को हैक कर सकते हैं: http://stackoverflow.com/questions/1761825/संदर्भित-बच्चे की एक प्रतिबद्ध-इन-Git। – ellotheth

उत्तर

0

ओह। उस सावधानी से पर्याप्त नहीं पढ़ा।

प्रतिबद्धता में एकमात्र जानकारी अपने माता-पिता (या माता-पिता) की आईडी है। आप माता-पिता से बच्चे से नहीं मिल सकते हैं (यह एक डीएजी होने के भंडार का निर्देशित हिस्सा है)।

यह और अधिक देख रहे हैं - ऐसा लगता है कि गिट लॉग के लिए --ancestry-path विकल्प ऐसा कर सकता है। दिए गए उदाहरण के लिए:

* 85d26ab When compiling vim, also compile & install gvim 
* 3146e5d Merge remote-tracking branch 'origin/devel' into deve 
|\ 
| * 28d08e5 rebasing-merge: specify all commits explicitly 
* | 006d11d Help 'file' find its magic file 
|/ 
* e68531d (tag: Git-1.7.6-preview20110720) Update submodules 

हम

git log --oneline --ancestry-path B..E 

का उपयोग कर इन दो प्रतिबद्ध के सभी बच्चों प्राप्त कर सकते हैं यदि आप तो यह रिवर्स और पहले एक बंद लेने - जो है एफ

git rev-list --reverse --ancestry-path 28d08e5..006d11d | head -1 

मेरे मामले में जो 3146e5d लौटाता है।

0

all.awkthis answer से प्रत्येक रेफरी के लिए लाइन नंबर भी ले जाने के लिए एडाप्टर करें, फिर जब आप दोनों माता-पिता का सामना करना पड़ता है तो वे आम तौर पर उन रेफरी को देखते हैं जो उनके समान हैं।

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