मैं गिट में दो फीचर शाखाओं को समेटने का प्रयास कर रहा हूं। ऑटोमर्जिंग समस्याग्रस्त है, क्योंकि इन दोनों सुविधाओं की कार्यक्षमता सह-अस्तित्व में नहीं हो सकती है। संदर्भ के लिए, परिदृश्य इस प्रकार है:

      -------------   Feature A
    /               \
-------------------------   Main
      \       /
        -----   Feature B

फ़ीचर ए मेन से अलग हो गया, और हमें पता था कि इसे लागू होने में कुछ समय लगेगा। इसके तुरंत बाद, हमने फीचर बी को एक स्टॉप-गैप के रूप में विकसित करने के लिए फीचर ए के तैयार होने तक विभाजित किया। यह समान कार्यक्षमता को एक अलग तरीके से लागू करता है, और फ़ीचर ए के साथ सह-अस्तित्व में नहीं हो सकता है। चूंकि फ़ीचर बी को मुख्य में वापस विलय कर दिया गया था, मेन पर आवश्यक कमिट हुए हैं कि फ़ीचर ए को भी ज़रूरत है (अन्यथा मैं फ़ीचर ए की नोक को केवल बल के रूप में धक्का दूंगा मेन का नया सिरा)। ध्यान दें कि शाखाओं के बीच असंगति की प्रकृति कुछ ऐसा नहीं है जिसे गिट पहचान सकता है; यह कोड की परस्पर विरोधी पंक्तियाँ नहीं हैं, बल्कि समान संसाधनों का उपयोग करके कोड की अलग-अलग पंक्तियाँ हैं।

मैंने पाया यह उत्तर सबसे सीधा समाधान है, लेकिन वहां आम सहमति यह प्रतीत होती है कि यह एक खराब कार्यप्रवाह का संकेत है या बुरा अभ्यास। इसके बजाय आप इस स्थिति को कैसे संभालेंगे?

git
1
Adam Wolnikowski 26 जिंदा 2022, 21:00
मर्जसेट (ओं) को पूर्ववत करें बी-> मुख्य विलय करने के बाद ए-> मुख्य?
 – 
Lazy Badger
26 जिंदा 2022, 21:30
1
आप पहले Main को Feature A में मिला सकते हैं। फिर, Feature A शाखा की पर सफाई (यानी Feature B सामग्री को हटाना) करें। फिर, आप Feature A को Main "सुरक्षित रूप से" में मर्ज कर सकते हैं। git revert Feature A पर काम करते समय Main को इसमें मिलाने के बाद आपका मित्र हो सकता है। वैकल्पिक रूप से, यदि आप Feature A पर सफाई नहीं करना चाहते हैं, तो आप Feature A से पहले शाखा बंद कर सकते हैं।
 – 
Michi
26 जिंदा 2022, 21:34
1
ओह, यह स्पष्ट रूप से उत्तर है, मुझे नहीं पता कि मैंने तुरंत ऐसा करने के बारे में क्यों नहीं सोचा। इस टिप्पणी के बजाय इसे उत्तर के रूप में सबमिट करना चाहते हैं?
 – 
Adam Wolnikowski
26 जिंदा 2022, 21:39

1 उत्तर

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

आप पहले Main को Feature A में मिला सकते हैं। फिर, Feature A शाखा की पर सफाई करें (अर्थात Feature B सामग्री को वहां से हटाना)। फिर, आप Feature A को Main "सुरक्षित रूप से" में मर्ज कर सकते हैं।

Feature A पर काम करने के बाद git revert आपका दोस्त हो सकता है इसमें Main को मिलाना।

वैकल्पिक रूप से, यदि आप Feature A पर सफाई नहीं करना चाहते हैं, तो आप Feature A से पहले शाखा बंद कर सकते हैं (नीचे Replace_B_by_A देखें)।

जैसे

git checkout Feature_A
git checkout -b Replace_B_by_A
git merge Main
# fix commits, e.g. by using `git revert`
git checkout Main
git merge Replace_B_by_A
1
Michi 26 जिंदा 2022, 21:49