2013-02-27 161 views
6

क्या गिट प्लंबिंग कमांड का उपयोग कर git branch --merged के बराबर प्राप्त करने का कोई तरीका है?गिट शाखा - प्लंबिंग कमांड का उपयोग करके उबाल

मुझे पता है कि git for-each-ref जैसे कमांड हैं जो आपको प्रतिबद्ध हैंश और उनके संबंधित रेफरी नाम देते हैं। क्या यह बताने के लिए कोई आदेश है कि कोई प्रतिबद्धता किसी अन्य प्रतिबद्धता से पहुंच योग्य है (जो मूल रूप से --merged करता है)?

+1

आप ऐसा क्यों करना चाहते हैं? –

+0

क्योंकि मैं स्क्रिप्ट में 'गिट शाखा --merged' के बराबर करना चाहता हूं लेकिन चीनी मिट्टी के बरतन उत्पादन (उदाहरण के लिए, "* मास्टर", "मूल/HEAD-> मूल/मास्टर", आदि से निपटना नहीं चाहता) – EnToutCas

+0

ठीक है, आप 'strace -f -o /tmp/branch.log -e trace = गिट शाखा --merged' निष्पादित कर सकते हैं, और देखें कि वास्तव में 'गिट' क्या करता है। वैकल्पिक रूप से, 'git' इसे आपके लिए करें: 'GIT_TRACE = 2 गिट शाखा --merged'। – twalberg

उत्तर

2

git merge-base --independent X Y Z आपको बताएगा कि उनमें से कौन सा अभी तक किसी अन्य शाखा में विलय नहीं हुआ है।

इसके अतिरिक्त, git merge-base --is-ancestor X Y आपको बताएगा कि एक्स वाई का पूर्वज है या नहीं, लेकिन यह git branch --merged को लागू करने का एक अक्षम तरीका है क्योंकि आपको इसे एन शाखाओं के लिए एन^2 बार चलाने की आवश्यकता होगी।

+1

स्पष्ट रूप से यह अपेक्षाकृत नई कार्यक्षमता है; ऐसा करने का पुराना तरीका 'गिट मर्ज-बेस एक्स वाई' चलाने के लिए था और यह देखने के लिए जांच करें कि मर्ज बेस एक्स के बराबर था या नहीं। –