2011-02-22 11 views
53

मैं पूरी तरह से जैसे कि यह भंडार में दर्ज नहीं किया गया था एक मर्क्युरियल प्रतिबद्ध और मेरे पूर्व प्रतिबद्ध करने के लिए वापस ले जाने हटाना चाहते हैं।आप Mercurial में एक प्रतिबद्धता कैसे हटाते हैं?

क्या यह संभव है?

+0

http://stackoverflow.com/questions/2338986/is-there-any-way-to-delete-local-commits-in-mercurial की डुप्लिकेट - विशेष उत्तर में देखें http://stackoverflow.com/a/6549478/8479 – Rory

उत्तर

32

यदि यह आपका अंतिम प्रतिबद्ध और आप इसे कहीं भी धक्का दे दिया नहीं किया था, तो आप rollback के साथ क्या कर सकते हैं। अन्यथा, नहीं। ज़रुरी नहीं। अपने पासवर्ड बदलने का समय।

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

+1

हाहा मैंने गलती से ऐसा किया है (वहां मेरी एसएसएच निजी कुंजी है) –

+0

अगर आपने संशोधन को धक्का नहीं दिया है तो चरण को गुप्त में बदलने के बारे में क्या? – 1nfiniti

+0

@mikeyUX: यह उत्तर 2.1 आने से पहले लिखा गया था, लेकिन रहस्य को चरण में बदलना वास्तव में परिवर्तन को हटा नहीं देता है; यह आपको इसे 'एचजी आउटगोइंग' में देखने या इसे किसी अन्य भंडार के साथ साझा करने से रोकता है। चरण को गुप्त में बदलना, फिर क्लोनिंग वही काम करेगा जैसा कि मेरे संपादन से पता चलता है। हालांकि मैं ऐसा करने से पहले हिस्टिट या एमक्यू का उपयोग करूंगा। – nmichaels

5

आप "एचजी backout" का उपयोग मूल रूप से एक रिवर्स मर्ज करने के लिए कर सकते हैं। सभी विकल्प स्वतंत्र रूप से उपलब्ध पुस्तक में चर्चा कर रहे हैं "मर्क्युरियल: यह निश्चित गाइड":

http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html

+0

मुझे एहसास है कि मेरा सुझाव प्रतिबद्धता को हटा नहीं देता है लेकिन लिंक सभी विकल्पों के बारे में बात करता है, जिसमें "एचजी रोलबैक" विकल्प nmichaels सुझाया गया है। –

+0

आम तौर पर मुझे यह समाधान पसंद है। अपनी गलतियों को स्वीकार करना और अपने बुरे कामों का इतिहास रखना, साथ ही साथ तथ्य यह है कि आपने उनका समर्थन किया है। –

5

यदि यह एक से अधिक प्रतिबद्ध और/या आप पहले से ही इसे कहीं और धक्का दे दिया, आप अपने भंडार क्लोन और निर्दिष्ट कर सकते हैं है अंतिम परिवर्तन जो क्लोन किया जाना चाहिए।

ऐसा करने के तरीके यहाँ मेरा उत्तर देखें:
Mercurial: Fix a borked history

आप केवल स्थानीय रूप से प्रतिबद्ध है और धक्का नहीं किया, तो आप सिर्फ एक क्लोन स्थानीय रूप से (मेरे लिंक में वर्णित है) बना सकते हैं और आपका काम पूरा हुआ ।

आप पहले से ही कुछ सुदूर भंडार को धक्का दे दिया, तो आप को बदलने के लिए है कि अपने क्लोन के साथ होगा।
बेशक यह निर्भर करता है कि यदि आप ऐसा करने में सक्षम हैं (या अनुमति है)।

29

आप अपने लिए प्रतिबद्ध के बारे में MQ की जानकारी दूर करने की कोशिश कर सकते हैं।

  • इसके लिए आपको फ़ाइल-> सेटिंग्स-> एक्सटेंशन जाना होगा।
  • MQ वहाँ की जाँच करें और जीयूआई को पुनरारंभ करें।
  • उसके बाद सिर्फ सही अनावश्यक पर क्लिक करने और ModifyHistory-> पट्टी
+0

क्या आप TortoiseHg के बारे में बात कर रहे हैं? – Pluto

3

कछुआ का उपयोग कर आप संशोधित इतिहास> पट्टी का उपयोग कर सकते हैं ...

10

इतिहास संपादित करने के लिए मैं Histedit Extension विस्तार का प्रयोग करेंगे ।

hg histedit 45:c3a3a271d11c 

हालांकि यह ध्यान रखें यह केवल एक स्थिति है जहाँ आप अभी तक सार्वजनिक भंडार के लिए प्रतिबद्ध धक्का दिया नहीं किया है में समझ में आता है, तो आप सार्वजनिक भंडार के मालिक हैं और/या आप सभी क्लोन के लिए वहाँ बाहर पता लगा सकें। आपको निम्न त्रुटि प्राप्त होता है:

abort: can't rebase immutable changeset 43ab8134e7af 

इसका मतलब है Mecurial सोचता है कि यह एक सार्वजनिक changeset (phases देखें) कि पहले से ही धक्का दे दिया गया है - आप इसे एक draft फिर से कर रही हो करने के लिए मजबूर कर सकते हैं:

hg phase -f -d 45:c3a3a271d11c 
+1

मेरा मानना ​​है कि यह अधिक सही अद्यतित उत्तर है। एचजी विकसित होता है। –

6

मुझे यह काफी बार सामना करना पड़ता है।मैं एक प्रतिबद्धता और करता हूं तो पुश करने के लिए खींचें। लेकिन फिर कुछ ऐसा आने वाला है जो मेरी नव निर्मित प्रतिबद्धता को अनावश्यक बनाता है। क्योंकि यह केवल पुल नाश कर देती है एक सादे hg rollback पर्याप्त नहीं है ...

यह करने के लिए बात है:

hg strip <rev> 

हालात दर्द रहित है जब आप अपने changesets कहीं भी धक्का नहीं है।

1

हां। जब तक मैं गलत नहीं हूं, v2.3 (rel। 2012/08/01) के रूप में आप परिवर्तनों को हटाने के लिए strip या backout के साथ drop कमांड को छोड़ने के लिए HisteditExtension का उपयोग कर सकते हैं।

सुविधा पर एक सरल गूगल खोज: https://www.google.com/webhp#q=histedit+drop

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