2009-05-25 12 views
20

क्या रिमोट चेंजेट से निकालने का कोई तरीका है, या एक संपूर्ण परिवर्तन को हटाने के लिए कोई तरीका है? मैंने गलती से .war फ़ाइल को रिमोट रेपो में धक्का दिया और मैं इसे हटाना चाहता हूं।Mercurial: दूरस्थ शाखा से परिवर्तन हटाएं

उत्तर

4

मैंने इतिहास संपादित करने के लिए एचजी एमक्यू एक्सटेंशन का उपयोग किया। ऐसा लगता है कि यह काम किया। धन्यवाद सब कुछ।

+1

या, http: //mercurial.selenic। com/wiki/EditingHistory आपको अपने संशोधन में वापस जाने देता है और व्यक्तिगत संशोधन को हटा देता है या आपके संशोधन में परिवर्तन (पासवर्ड हटाएं) – xster

34

Mercurial आपके डेटा को सुरक्षित रखने के लिए बहुत मेहनत करता है, इसलिए आप आम तौर पर इतिहास नहीं बदल सकते हैं।

कहा जा रहा है कि, Mercurial के लिए कई एक्सटेंशन हैं जो आपको इतिहास को आसानी से बदल सकते हैं। page on the wiki about editing history है। वह पृष्ठ भी परिणामों को समझाता है।

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

यदि आप इसे हटाने का निर्णय लेते हैं, तो मैं इसके बिना प्रतिलिपि प्राप्त करने के लिए hg clone का उपयोग करने का सुझाव देता हूं। यह सुरक्षित तरीका है क्योंकि यह हमेशा बैकअप के पीछे छोड़ देगा। आप दूरस्थ भंडार को [z] धक्का दे दिया, तो:

[x] --- [y] --- [z] 

और अब इसे हटाने के लिए चाहते हैं, तो सर्वर में प्रवेश और

hg clone -r y repo repo-without-z 

फिर repo-without-z[y] तक सभी changests शामिल होंगे करते हैं - जो है, [z] हटा दिया जाएगा दिया गया है:

[x] --- [y] 

फिर आप काम जारी रखने के लिए और एक नया changeset धक्का कर सकते हैं:

[x] --- [y] --- [w] 

अगर मैं [z] changeset पहले से ही खींच लिया था और अब [w] खींच रहा भंडार में दो सिर देखेंगे:

  [w] 
     /
[x] --- [y] --- [z] 

यह खतरनाक दर असल नहीं है - लेकिन लोगों को हैरानी हो सकती है। अगर मैं अपने क्लोन से [z] हटा देता हूं तो मैं आपके जैसा ही भंडार समाप्त कर दूंगा। लेकिन, ऊपर लिखा गया है, यदि आपके पास कई उपयोगकर्ता हैं तो यह अव्यवहारिक हो सकता है।

आप MQ extension से स्ट्रिप का उपयोग भी जगह में बदल सकते हैं। इस तरह आप एक नया क्लोन नहीं बनायेंगे।

अंत में, यदि आप निश्चित हैं कि धक्का सर्वर पर किया गया अंतिम ऑपरेशन था, तो अंतिम लेनदेन को हटाने के लिए hg rollback का उपयोग किया जा सकता है। लेकिन ऐसा न करें अगर आप केवल एक ही हैं जो भंडार को धक्का दे सकता है, अन्यथा आप एक अलग लेनदेन को वापस ले जा सकते हैं।

यदि भंडार Bitbucket पर है, तो आप सर्वर में लॉग इन नहीं कर सकते हैं। लेकिन बिटबकेट ने हाल ही में अपने वेब इंटरफ़ेस में एक स्ट्रिप कार्यक्षमता जोड़ा है। "व्यवस्थापक" अनुभाग में "रिपोजिटरी प्रबंधन" की तलाश करें।

+1

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

+4

हाँ, Bitbucket छीन संशोधन का बैकअप बनाता है, और :-(अपने कोटे की ओर बैकअप मायने रखता है आप, Bitbucket पर भंडार को नष्ट ही नाम के साथ इसे फिर से बनाने के लिए, और इसके बाद के संस्करण के लिए अपने स्थानीय क्लोन से धक्का। –

+1

मेरे टिप्पणी कर सकते हैं अब मान्य नहीं है, कृपया नीचे देखें [जेस्पर] [http://stackoverflow.com/a/909290/110204) नीचे उत्तर दें। –

13

बिटबकेट आपको स्ट्रिपिंग पर एक बंडल (बैकअप) प्रदान करता है, और यह आपके कोटा के विरुद्ध गिनती नहीं करता है। ऐसा करने का कारण ऐसा प्रतीत होता है, केवल इसलिए कि हमने कैश कुंजी को अमान्य नहीं किया है, यह निर्दिष्ट करते हुए कि आप कितनी जगह का उपयोग करते हैं।

यह हमारे सिस्टम में एक बग है, और इसका इलाज किया जाएगा।तब तक, आश्वस्त रहें कि परिवर्तन को हटा दिया गया है, और बैकअप मुक्त है :-)

+6

नाइस जेस्पर, ड्रॉप करने के लिए धन्यवाद :-) –

1

मैं एक ऐसी ही मामले में जहां मैं किसी मर्ज किए गए शाखा "देव" शाखा से 'ए' changeset निकालना चाहते हैं दूर से TortoiseHg का उपयोग कर था:

  1. शाखा एक के माता-पिता शाखा से शाखा ए.ए. बनाएं; इसकी उत्पत्ति
  2. ए को एए (कार्यशील निर्देशिका) में मर्ज करें और यह सुनिश्चित करें कि विकल्प: "अन्य संशोधन से सभी परिवर्तनों को छोड़ दें" चेक किया गया है।
  3. देव शाखा में एए मर्ज करें (एक प्रतिबद्ध संदेश के साथ कि शाखा ए परिवर्तन हटा दिए गए थे)।

आप उस शाखा को देखेंगे कि देव में परिवर्तन अब मौजूद नहीं हैं।

+1

यह मेरे लिए, महान समाधान के लिए काम करता है। मैं सिर्फ यह स्पष्ट करता हूं कि (2) के लिए, मुझे लगता है कि आपका मतलब है "ए को ए में विलय करें" और त्यागें। वैसे भी मैंने वही किया, और फिर चरण 3 ने एक अच्छी प्रतिबद्धता बनाई जो सभी अवांछित परिवर्तनों का समर्थन करता था। –