2013-03-06 10 views
35

मेरे Git रेपो इस तरह दिखता है।गिट एक शाखा को दूसरे में विलय कर रहा है एक दो तरह का विलय है? मास्टर में शाखा</p> <pre><code> _ branch_a / master/ _ branch_b </code></pre> <p>अब मैं branch_a में branch_b मर्ज करना चाहते हैं, <strong>नहीं</strong> या तो:

तो, मैं

git checkout branch_a 
git merge branch_b 

किया और Git चला गया और संघर्ष की एक जोड़ी मिल गया।

जब मैं git mergetool कर meld का उपयोग कर रहा कंसोल पर क्या मिलेगा

{local}: modified file 
{remote}: modified file 

है और एक खिड़की केवल स्थानीय और दूरस्थ दिखा।

क्या मैं जानना चाहता हूँ है:

  1. क्यों दिखाया क्या मास्टर में था की साझा आधार नहीं है?

  2. लोकल और रिमोट के बीच, जिसे मैं संपादित करना चाहता हूं?

+7

यदि आप ए में बी को मर्ज करना चाहते हैं तो सही आदेश 'गिट चेकआउट शाखा_बी गिट मर्ज शाखा_ए' – iberbeu

+0

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

+0

गिट संस्करण 1.8.1.2 – EMiller

उत्तर

11

यदि आप शाखा ए में शाखा ए को विलय करते हैं तो आप जो संघर्ष करते हैं, वह दोनों शाखाओं के बीच अंतर से आते हैं, न कि मास्टर के साथ अंतर से। ए या बी में git diff क्रियान्वित आप तथापि Mastère साथ diff दे देंगे क्योंकि यह पूर्वज

आम तौर पर स्थानीय शाखा एक आप में मर्ज किए जाने हैं होना चाहिए और दूरदराज के एक आप करना चाहते हैं विलय करें। वैसे भी आपके कंप्यूटर में आपके पास केवल फाइल की एक प्रति होगी, इसलिए इसे

+0

यह तकनीकी रूप से सच है कि 'मास्टर' शाखा उस विलय में शामिल नहीं होगी। लेकिन, उस मामले में मास्टर पॉइंट्स जो मुद्दा इंगित करता है वह सामान्य पूर्वज होगा। – qqx

+0

एक शाखा (ए या बी) का अंतर पूर्वजों (इस मामले में मास्टर) के साथ तुलना से लिया जाता है जो सच है, लेकिन जब आप ए में बी विलय करते हैं तो संघर्ष उन शाखाओं द्वारा दिए जाते हैं, न कि मास्टर द्वारा। वही तो मेरा मतलब था। मैंने अपना जवाब संपादित किया – iberbeu

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