2011-08-03 15 views
25

क्या होगा अगर एक शाखा में दो सिर हों? कुछ हफ्तों पहले मैं इस स्थिति में आया था, इसलिए मैंने उन्हें वापस विलय नहीं किया और सिर्फ एक सिर पर विकास जारी रखा। अब मैं दूसरे सिर से छुटकारा पाना चाहता हूं। मुझे क्या करना चाहिए? क्या मुझे बस इतना सारे बदलावों के बाद मर्ज करना चाहिए?Mercurial: एक शाखा से कैसे निपटें जिसमें दो सिर हैं

+0

के संभावित डुप्लिकेट [वहाँ कई प्रमुखों को हटाने का एक और तरीका है?] (Http://stackoverflow.com/questions/6867054/is-there -नहीं-ऑफ-रीमूविंग-बहु-सिर) –

उत्तर

28

तो आप इस राशि:

o--o--o--A--B <- older unnecessary head 
     \ 
     1--2--3--4--5--6 <- newer ‘good’ head 

... और आप A और B, बिल्कुल, 100% यकीन है कि जरूरत नहीं है। यदि आप सुनिश्चित नहीं हैं, और A और B में संभावित रूप से बचाए जाने योग्य चीजें हैं, तो परिवर्तनों को गठबंधन करने के लिए सिर को बेहतर ढंग से मर्ज करें। जैसा कि हारून ने कहा, Mercurial उस पर अच्छा है।

  • वर्ष सिर से छुटकारा पाने के लिए, या
  • दो सिर कि सिर B पर ध्यान नहीं देता की एक डमी मर्ज कार्य करें:

    अब आपके पास दो विकल्प हैं।

changesets A और B अन्य खजाने में मौजूद हैं आप को नियंत्रित नहीं करते हैं, उदाहरण के यदि अन्य लोगों ने A और B को अपने भंडारों में खींच लिया है, या आपने A और B को सार्वजनिक भंडार (कहें, बिटबकेट) पर धक्का दिया है, तो आपने जंगली में A और B जारी किया है, और उनसे छुटकारा नहीं मिल सकता है।

$ hg up 6 
$ hg --config ui.merge=internal:local merge 

इस मर्ज A और B से किसी भी परिवर्तन पर ध्यान नहीं देगा: आप एक dummy merge करना चाहिए।

हैं, तो दूसरी ओर, A और B हैं निजी, आप कर सकते हैं या तो strip उन्हें:

$ hg strip A 

(। रेव A और छीन वंश; strip उपलब्ध बनाने के लिए MQ एक्सटेंशन सक्षम)

या, changesets A और B के बिना अपने भंडार का एक नया क्लोन बनाने:

,210
$ hg clone myrepo myrepo2-clone -r 6 

(केवल 6 फिरना और पूर्वजों क्लोन करने के लिए जोड़ा।)

+0

डमी विलय मेरी समस्या हल, धन्यवाद! – nrodic

-3

यदि आपको पुरानी शाखा में परिवर्तनों को रखने की आवश्यकता है, तो आपको उन्हें मर्ज करना चाहिए, और यह कोई समस्या नहीं होनी चाहिए।

+4

यदि मुझे उन परिवर्तनों की आवश्यकता नहीं है तो क्या होगा? – thoslin

6

यदि आप कुछ बदलाव करते हैं (मौजूदा परिवर्तन में परिवर्तन जोड़ें) तो एक सिर बनाया जाता है। यदि यह एक ही बदलाव के लिए कई बार होता है, तो कई सिर बनाए जाते हैं। यह असामान्य या बुरा कुछ भी नहीं है।

सामान्य समाधान उन्हें मर्ज करना है। Mercurial विलय में बहुत अच्छा है। संभावना है कि परिणाम अभी भी संकलित और बिना किसी मैन्युअल काम के चलाएगा।

बस hg merge और फिर hg status और hg diff चलाएं ताकि दोनों के बीच क्या बदल सके। यदि आपको परिणाम पसंद है, तो इसे प्रतिबद्ध करें। यदि आपको यह पसंद नहीं है, तो update या तो अपने वर्कस्पेस को साफ़ करने के लिए सिर पर जाएं।

एक सिर से छुटकारा पाने के लिए, docs explain how to do that

एमक्यू का उपयोग करके, आप दूसरे सिर को एक स्वतंत्र शाखा में भी बदल सकते हैं (ताकि आप इसे चारों ओर रख सकें लेकिन यह आपको परेशान नहीं करेगा)। इस जवाब देखें: How can I create a branch for a non-tip revision in Mercurial?

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