Hg मर्ज को कैसे छोड़ें?


131

मैं मर्क्यूरियल के साथ सहयोग करने के लिए नया हूं। मेरी स्थिति:

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

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

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

जवाबों:


126

आप -C (या - क्लेयन) ध्वज के साथ अनियोजित परिवर्तन को छोड़ सकते हैं:

hg update -C -r 3

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

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


धन्यवाद। आपने इस बारे में सही उत्तर दिया होगा, जब मैंने इसे स्वयं समझ लिया था। मैं M-x indent-regionईमेक में हूं , इसलिए रीइंडेंट ट्रिक थी।
ग्रुमड्रिग

6
वर्थ नोटिंग कि अनट्रैक फाइल्स को हटाया नहीं जाएगा।
djsutho

132

BTW: यदि आप अपने द्वारा किए गए मर्ज को वापस लेते हैं और 3 आपका संशोधन नंबर नहीं है तो आप यह कर सकते हैं:

hg update -C -r .

24
मेरे जैसे किसी के लिए भी कि पहली बार में यह कैसे काम नहीं करता था: डॉट .पिछले संशोधन का एक शॉर्टकट है।
जीरोन विएट प्लिमर्स

1
बहुत बढ़िया जवाब! सबसे अच्छा होना चाहिए
ओलेग अब्राजेव

1
@ थाइमाइन: hg help updateमुझे मिलता है: यदि कोई बदलाव निर्दिष्ट नहीं किया गया है, तो वर्तमान नामित शाखा की नोक पर अपडेट करें ... और टिप हमेशा आपका वर्तमान संशोधन नहीं हो सकता है जिस पर आप काम कर रहे हैं। मैंने इसका परीक्षण नहीं किया, अब तक ..
गणित

1
आह, यह जानने के लिए एक अच्छा विवरण है ... वास्तव में मैं अपनी टिप्पणी को हटाने का दावा करने जा रहा हूं -r ., जो एक ही है
Thymine

सरल और बहुत उपयोगी।
नवीन कुमार V

33

एक मर्ज किए गए मर्ज को पूर्ववत् करने के लिए, उपयोग करें

hg update --clean

जो सभी परिवर्तनों को खोते हुए मूल मर्ज माता-पिता की एक स्वच्छ प्रतिलिपि की जाँच करेगा।


2

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


2
जोड़ना -Cया --cleanयह है कि आप मर्क्यूरियल को आगे जाने के लिए कैसे कहेंगे, तब भी जब यह कुछ संशोधित फ़ाइलों को फेंक देगा। आप सही हैं कि hg update -r Xआप सामान्य रूप से एक्स को संशोधित करने के लिए ले जाएंगे, लेकिन जब आप एक मर्ज में होते हैं तो आपको थोड़ा और जोर देने की आवश्यकता होती है :-)
मार्टिन गीस्लर

7
मुझे लगता है कि "hg revert --all --cancelmerge" कहीं अधिक सहज होगा।
वॉरेन पी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.