2013-10-16 2 views
5

git branch -r --no-merged कैसे काम करता है?गिट --no-merged विकल्प कैसे काम करता है

क्या यह जांचने के लिए जांच करता है कि क्या मूल शाखा में सभी शाखाएं पहले से मौजूद हैं या नहीं?

और चेरी चुनौतियों के बारे में क्या? क्या यह कहना इतना समझदार है कि 1 शाखा से एक प्रतिबद्धता पहले ही मूल मूल शाखा में वापस ले ली गई है?

और यदि एक शाखा पहले से ही विलय कर दी गई है और नई प्रतिबद्धताओं को जोड़ा गया है तो क्या वह उस शाखा को विलय के रूप में उठाएगा?

+1

क्या आपने मैन पेज पढ़ा है? यह कहता है "केवल उन शाखाओं की सूची बनाएं जिनकी युक्तियां निर्दिष्ट प्रतिबद्धता से पहुंच योग्य नहीं हैं" – Hasturkun

उत्तर

10

खैर, @Hasturkun से टिप्पणी का कहना है कि यह सब ईमानदार होना है, लेकिन आप 3 प्रश्न हैं:

1. यह अगर सब एक शाखा में करता है पहले से ही मूल माता पिता शाखा में मौजूद देखने के लिए जाँच करता है?

पुनरावृत्ति करने की कोशिश नहीं कर रहा है @ हास्टुरकन उद्धरण कहते हैं: "केवल उन शाखाओं की सूची बनाएं जिनकी युक्तियां निर्दिष्ट प्रतिबद्धता से पहुंच योग्य नहीं हैं"।

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

master : - - - -0 
        \ 
branchA :   E - - - - F - - - - G 

आप git branch --no-merge और मैनुअल पेज परिभाषा लेने चलाने master पर हैं? क्या आप master के हेड से जी (branchA की नोक) तक पहुंच सकते हैं, 0 प्रतिबद्ध कर सकते हैं? नहीं, आप नहीं कर सकते, इसलिए branchA गैर-विलय वाली शाखा के रूप में सूचीबद्ध किया जाएगा।

अगर आप branchA (जी प्रतिबद्ध करें) के HEAD से git branch --no-merge चलाते हैं तो कैसे? master एक गैर विलय वाली शाखा होगी? नहीं, इसे एक विलय वाली शाखा माना जाता है, यह समझने के लिए तुच्छ है कि पहले उदाहरण क्यों दिया गया।

इस उदाहरण के बारे में कैसे?

master 
    branchA 
    branchB 
branchA (nothing) 
branchB (nothing) 

2. और क्या चेरी पसंद के बारे में:

master : - - - -0 
        \ 
branchA :   E - - - - F - - - - G - - - Z 
           \    /
branchB :      Y - - - W - - - 

Git शाखा चल सभी 3 शाखाओं में --no-विलय कर के आउटपुट? कहने के लिए यह बहुत चालाक है कि एक 1 शाखा से प्रतिबद्ध पहले से ही किया गया है चेरी मूल माता पिता शाखा में वापस उठाया?

चेरी-की पसंद एक पूरी तरह से अलग commitId बनाते हैं, तो मैं केवल उन्हें इस्तेमाल जब मैं वास्तव में करने के लिए है। यह एक पूरी तरह से अलग प्रतिबद्ध बनाता है के बाद से, पेड़ अलग होगा:

अनुभव 1) का उपयोग करते हुए विलय

(master)$ touch empty && git add . && git commit -am "File Added" 
(master)$ checkout branchA 
(branchA)$ git branch --no-merged 
    master 
(branchA)$ git merge master 
(branchA)$ git branch --no-merged 
    // outputs nothing 

अनुभव 2: इस प्रयोग मैं बस किया था पर

देखो, गुरु और branchA एक ही विचार करें) का उपयोग करना चेरी लेने

(master)$ touch empty && git add . && git commit -am "File Added" 
(master)$ checkout branchA 
(branchA)$ git branch --no-merged 
    master 
(branchA)$ git cheery-pick <commitID from above> 
(branchA)$ git branch --no-merged 
    master 

3. और अगर एक शाखा पहले से ही विलय कर दिया गया और नए प्रतिबद्ध जोड़ दिया गया है कहीं भी होगी उस शाखा को लेने के रूप में विलय नहीं किया जा रहा है?

हां, ऊपर वर्णित सभी की वजह से।

+0

विस्तृत प्रतिक्रिया के लिए बहुत धन्यवाद – DarVar

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