मैं इससे संबंधित समस्या के बारे में पूछ रहा हूँ: https://github.com/git/git/blob/master/Documentation/howto/revert-a-faulty-merge.txt

मेरी तीन शाखाएँ हैं: मास्टर, ए और बी। मैंने बी को ए में मिला दिया। लेकिन बाद में यह एक गलती निकली इसलिए मैंने इस मर्ज को वापस कर दिया। मुझे पता है कि अब एक और बी टू ए मर्ज करना असंभव है (क्योंकि मैं रिवर्ट से पहले बी से बदलाव खो सकता हूं), मुझे पहले इस मर्ज के रिवर्ट का रिवर्ट करना चाहिए और फिर बी को ए में मर्ज करना चाहिए।

और यहाँ मास्टर आता है ... क्या होगा यदि पहले मर्ज की वापसी के बाद, कोई B को मास्टर में और फिर A को मास्टर में मर्ज करेगा? या उल्टे क्रम में? क्या पहली वापसी से पहले B से परिवर्तन मास्टर पर होंगे?

क्या कोई मेरी मदद कर सकता है?

NS

1
czaduu 25 अक्टूबर 2019, 10:39

1 उत्तर

सबसे बढ़िया उत्तर

आपके पास यह इतिहास है (समय बाएं से दाएं बहता है):

-o--o--o--o           <- master
  \
   a--a--a---M--R     <- branch A
    \       /
     b--b--b          <- branch B

R उनके मर्ज का उलटा M है।

क्या होगा यदि पहले विलय के बाद, कोई बी को मास्टर में और फिर ए को मास्टर में विलय कर देगा? या उल्टे क्रम में? क्या पहली वापसी से पहले B से परिवर्तन मास्टर पर होंगे?

यानी आपको यह इतिहास मिलता है:

-o--o--o--o--X----Y    <- master
 |          /     |
 |   b--b--b      |    <- branch B
  \ /       \    /
   a--a--a---M--R      <- branch A

यहां, पहले B को master में मिला दिया गया, फिर A में। जैसा कि आप देख सकते हैं, उत्क्रमण अब master का हिस्सा है, और इसी तरह इसके द्वारा लाए गए परिवर्तन हैं, अर्थात यह शाखा B के परिवर्तनों को पूर्ववत करता है। आप देख सकते हैं कि X और सभी प्रतिबद्ध हैं, लेकिन छोड़कर, Y में शाखा के परिवर्तन B हैं, लेकिन Y और बाद में इन परिवर्तनों को वापस कर दिया गया है।

यदि, दूसरी ओर, शाखा A को पहले विलय किया गया था, तो शाखा B (साथ ही इसकी उलटी प्रतिबद्धता R) पहले से ही विलय में शामिल है। git merge B आपको बताएगा: "पहले से अप टू डेट"।

1
j6t 25 अक्टूबर 2019, 14:04