2014-12-13 8 views
6

वर्तमान में मेरे पास स्थिर मास्टर शाखा है, और कुछ शाखाओं पर बहुत सारे बड़े बदलाव वाले शाखा हैं।शाखा में छोटे बदलाव को विलय करना

"परिवर्तन" शाखा का उपयोग करते समय, मुझे एक बग की खोज हुई जिसे मैं मास्टर शाखा पर भी ठीक करना चाहता हूं।

मैंने मास्टर पर कोड की केवल एक पंक्ति को बदलकर इसे ठीक किया।

अब, मैं यह हॉटफिक्स "परिवर्तन" शाखा में भी जोड़ना चाहता हूं।

Reading some answers, यह सुझाव दिया गया है कि सबसे अच्छा विकल्प रीबेस करना होगा।

"परिवर्तन" शाखा पर git rebase master लागू करते समय, हालांकि, गिट विरोधाभासी फ़ाइलों में से एक को पहले की तुलना में एक पूरी तरह से अलग फ़ाइल पर विचार करता है। mergetools --tool diffuse का उपयोग करना, मैं नैदानिक ​​निम्नलिखित मिलती है:

जैसा कि आप देख सकते हैं, वहाँ पहले फाइल में एक परिवर्तन है, दूसरे में परिवर्तन के टन, और जाहिरा तौर पर कुछ भी बीच कोई ओवरलैप।

मेरा प्रश्न है: क्या छोटे बदलाव को भारी रूप से परिवर्तित शाखा में विलय करने का कोई तरीका है, बिना संघर्ष समाधान में बहुत अधिक प्रयास किए बिना? यदि नहीं, तो इस स्थिति को संभालने का सबसे अच्छा तरीका क्या है?

+0

एक पंक्ति परिवर्तन के लिए, चेरी-पिकिंग जाने का रास्ता है। –

+0

भारी रूप से परिवर्तित हिस्से के लिए, यह केवल बदतर हो जाएगा। जब समय आता है तो यह जांचने लायक हो सकता है नकल - मैंने कभी इसे क्रोध में इस्तेमाल नहीं किया है, लेकिन यह अच्छी तरह से सोचा और लोकप्रिय लगता है। – jthill

उत्तर

3

आप चेरी-पिक विधि उपयोगकर्ता 3387542 सुझावों का उपयोग कर सकते हैं, यह करने का एक अच्छा तरीका है, केवल एकमात्र तरीका नहीं है। दूसरा यह है कि चूंकि मास्टर शाखा पर भी बग मौजूद है, इसलिए दोनों के लिए सबसे हालिया विलय आधार भी है।

git checkout $(git merge-base master changes) 
# fix bug at the last branchpoint 
git commit -m 'fix bug #27182' 
git branch bugfix-27182 

git checkout master 
git merge bugfix-27182 

git checkout changes 
git merge bugfix-27182 

# git branch -d bugfix-27182 

कमियां किसी भी तरह से नहीं है, तो आप स्पष्ट पता लगाने की क्षमता के साथ प्रतिबद्ध-ग्राफ अव्यवस्था संतुलन रहे हैं (यह आसान git branch --contains $somecommit कहने के लिए पता लगाने के लिए जो शाखाओं ठीक, इतना आसान नहीं है और न ही इतना बराबर करता देखने के लिए कुछ शामिल है, लेकिन एक बहुत साफ दिखने वाला इतिहास।

2

कमांड गिट चेरी-पिक पर एक नज़र डालें। इसके बारे में यहाँ और अधिक विवरण:

http://git-scm.com/docs/git-cherry-pick

हम अक्सर इसका इस्तेमाल, अलग विज्ञप्तियों वाली अन्य शाखाओं के लिए bugfixes कॉपी करने के लिए। यह एक महान विशेषता है।

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