2010-04-03 16 views
95

मैं Mercurial के साथ सहयोग करने के लिए नया हूँ। मेरी स्थिति:एचजी विलय को कैसे छोड़ें?

  • एक और प्रोग्रामर ने 2-स्पेस इंडेंट के साथ 4-स्पेस इंडेंट्स को प्रतिस्थापित करने के लिए फ़ाइल के संशोधित 1 को बदल दिया। (यानी प्रत्येक पंक्ति को बदल दिया।) उस रेव 2 को कॉल करें, रिमोट रेपो पर धक्का दिया।
  • मैंने अपने स्थानीय कार्यक्षेत्र में विभिन्न कोड परिवर्तनों के साथ संशोधित संशोधन 1 किया है। कॉल करें कि रेव 3.
  • मेरे पास hg pull एड और hg merge डी क्या हो रहा था इसके बारे में स्पष्ट विचार किए बिना।
  • संघर्ष असंख्य हैं और वास्तव में वास्तविक नहीं हैं।

तो मैं वास्तव में चाहता हूं कि मैं विलय से पहले अपने स्थानीय रेपो को 2-स्पेस इंडेंट में बदल दूंगा; तो विलय छोटा होगा (मुझे लगता है)। लेकिन मैं बैक अप नहीं कर सकता। मुझे लगता है कि मुझे hg update -r 3 की आवश्यकता है लेकिन यह abort: outstanding uncommitted merges कहता है।

मैं विलय को पूर्ववत कैसे कर सकता हूं, मेरे स्थानीय रेपो में अंतर बदल सकता हूं, और रिमर्ज कर सकता हूं?

उत्तर

97

आप -सी (या --clean) ध्वज के साथ अप्रतिबद्ध परिवर्तनों को निरस्त कर सकते हैं:

hg update -C -r 3 

सावधान: सब कुछ है कि प्रतिबद्ध नहीं किया गया था चला जाएगा!

इसके बाद आपको शायद पूरे ऑपरेशन करने के लिए किसी प्रकार का कोड फॉर्मेटर टूल का उपयोग करना चाहिए, या कम से कम कुछ नियमित अभिव्यक्तियों के साथ ढूंढें और प्रतिस्थापित करें। __ (2 रिक्त स्थान) के साथ ^____ (अंडरस्कोर के बजाए 4 रिक्त स्थान का उपयोग करें) के साथ जितना आसान हो उतना आसान है, कुछ बार दोहराया जाता है (जब तक कि आपके पास कुछ घोंसला वाला कोड न हो) काम करना चाहिए।

+0

ओह - धन्यवाद। आपने सही जवाब दिया होगा जब मैंने इसे स्वयं समझ लिया था। मैं emacs में हूँ, तो 'एम-एक्स इंडेंट-क्षेत्र' ने फिर से चलने वाली चाल की। – Grumdrig

+4

ध्यान देने योग्य है कि अनचाहे फ़ाइलों को हटाया नहीं जाएगा। – djsutho

1

मैं जाहिरा तौर पर सिर्फ hg update -C -r 3 करने की जरूरत है, जो मन में राजस्व के साथ अपने स्थानीय फ़ाइलों को अधिलेखित करता है (जो मैंने सोचा था कि क्या hg update करना होगा, लेकिन मैं गलत था।) मेरी मदद के लिए धन्यवाद!

+2

'-C' या' --clean' जोड़ना यह है कि आप Mercurial को आगे बढ़ने के लिए कैसे कहते हैं, भले ही यह कुछ संशोधित फ़ाइलों को फेंक देगा। आप सही हैं कि 'एचजी अपडेट -आर एक्स' आम तौर पर एक्स को संशोधित करने के लिए ले जाएगा, लेकिन जब आप विलय में होते हैं तो आपको थोड़ा और जोर देने की आवश्यकता होती है :-) –

+7

मुझे लगता है कि "एचजी रिवर्ट --all --cancelmerge "बहुत अधिक सहज ज्ञान युक्त होगा। –

98

Btw: अगर आप सिर्फ मर्ज तुमने किया था वापस लौटने और 3 अपने संशोधन संख्या नहीं है आप यह कर सकते हैं:

hg update -C -r . 
+16

मेरे जैसे किसी के लिए जो पहले यह नहीं मिला कि यह कैसे काम करता है: dot '.' पिछले संशोधन के लिए एक शॉर्टकट है। –

+1

महान जवाब! सबसे अच्छा होना चाहिए –

+1

@ थिमिन: 'एचजी सहायता अपडेट' से मुझे मिलता है: * यदि कोई परिवर्तन निर्दिष्ट नहीं है, तो वर्तमान नामित शाखा की नोक पर अपडेट करें ... * और टिप हमेशा आपके वर्तमान संशोधन नहीं हो सकती है जिस पर आप काम कर रहे हैं। मैंने इसका परीक्षण नहीं किया, अब तक .. – math

17

एक अप्रतिबद्ध मर्ज पूर्ववत करने के लिए, का उपयोग

hg update --clean 

जो की जाँच करेगा मूल परिवर्तन मर्जेंट की एक साफ प्रतिलिपि, सभी परिवर्तनों को खोना।

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