2011-12-22 15 views
5

मान लीजिए कि मेरे पास मुख्य रेखा शाखा और एक विशेषता शाखा है। मैंने मेनलाइन शाखा को फीचर शाखा में कई बार विलय कर दिया है, लेकिन मेरे पास केवल कुछ ही मामूली विलय विवाद हैं। मैं इतिहास को साफ करना चाहता हूं ताकि अंत में केवल एक ही विलय हो। ऐसा करने के लिए सबसे अच्छी विधि क्या है?संयोजन एक विलय में विलय

+1

जब आप कहते हैं कि इतिहास को साफ, आप की जरूरत अधिक विशिष्ट: यह एक अधिक ठोस समाधान होगा। यदि आप मेनलाइन से मुख्य रूप से विलय को हटाना चाहते हैं, तो आपको यह तय करना होगा कि आप फीचर शाखा को उन विलयों के साथ दिखने के लिए क्या चाहते हैं। उदाहरण के लिए, यदि फीचर शाखा में कुछ काम मुख्य लाइन में किए गए परिवर्तनों (और बाद में फीचर शाखा में विलय) पर निर्भर करता है, तो विलय को हटाने से आपकी फीचर शाखा अब संकलित नहीं हो जाएगी क्योंकि यह हटाए गए कोड के आधार पर है। –

+0

@ केविनबालार्ड: यह एक वैध बिंदु है। कुछ मामलों में, आप शाखा को फिर से बदलना चाहते हैं। मैं इसके बारे में बहुत चिंतित नहीं हूं हालांकि इस सवाल के लिए, मैं सिर्फ यह सुनिश्चित करना चाहता हूं कि शाखा केवल एक बार में विलीन हो जाए – Casebash

उत्तर

1

क्या आपने git rebase देखा है?

git co -b temp_feature feature 
git rebase master 

इसे विलयों को अनदेखा करना चाहिए, लेकिन आपको संघर्षों को फिर से हल करना होगा। यह आसानी से वापस जाने के लिए temp_feature शाखा बनाता है लेकिन इसे रीफ्लॉग के साथ भी हासिल किया जा सकता है।

( नीचे गलत जवाब: इस एकल पैदा करेगा प्रतिबद्ध, एक भी मर्ज: - /)

मुझे लगता है कि सबसे सरल निम्न करने के लिए है:

git co master 
git merge --squash feature 

यह एकल पैदा करेगा प्रतिबद्ध पूरी सुविधा शाखा से। आप इस सुविधा का शाखा रखने के लिए नहीं करना चाहते हैं करते हैं:

git branch -D feature 
1

आप इस लक्ष्य को हासिल करने के लिए एक इंटरैक्टिव रिबेस कर सकते हैं, लेकिन आप अगर आप केवल ऐसा करना चाहिए नहीं अभी तक साझा कि किसी और के साथ इतिहास। अभ्यास में इसका क्या अर्थ है कि आपको केवल यह करना चाहिए यदि आपने git push को साझा रेपो में नहीं किया है।

1

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

संपादित करें: How to cherry pick a range of commits and merge into another branch

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