2010-04-23 10 views
5

मैं प्रतिबद्ध(धक्का दिया नहीं) स्थानीय रूप से फ़ाइलों का एक बहुत कुछ है और अब जब मैं पुश करने के लिए यह बहुत समय लेता है की कोशिश (बाइनरी फ़ाइलों को हटाने & जोड़ने ... सहित)। दरअसल मैंने अपने स्थानीय रेपो इतिहास को गड़बड़ कर दिया।मैं इतिहास से फ़ाइलों को स्थायी रूप से कैसे हटा सकता हूं?

मैं भविष्य में इस गलती से कैसे बच सकता हूं? क्या मैं स्थानीय संशोधन के अंतिम संशोधन के साथ स्थानीय संशोधन 1-> 2-> 3-> 4 से 1-> 2 के सेट को बदल सकता हूं?

संपादित करें: चूंकि मैं जल्दी में था, मैंने संशोधन के साथ खरोंच से एक नया रिमोट रेपो शुरू किया। भविष्य में मैं चिह्नित उत्तर के साथ जाऊंगा क्योंकि यह आसान लगता है लेकिन मैं सत्य देखने के लिए अन्य समाधान खोदूँगा। आपके समर्थन के लिए Thx।

उत्तर

1

Mercurial इतिहास अपरिवर्तनीय है, आप सामान्य उपकरण का उपयोग करके हटा नहीं सकते हैं। हालांकि, आप उन फ़ाइलों के बिना एक नया रेपो बना सकते हैं:

$ hg clone -r 1 repo-with-too-much new-repo 

कि केवल संशोधन शून्य और एक वर्ष रेपो से लेता है और उन्हें एक नया रेपो में डालता है। अब संशोधन चार से फ़ाइलों को नए रेपो में कॉपी करें और प्रतिबद्ध करें।

यह उन अंतरालीय परिवर्तनों से छुटकारा पाता है, लेकिन जंगली में आपके पास मौजूद किसी भी रेपो में अभी भी है, इसलिए जब आप pull पर वापस आ जाएंगे।

आम तौर पर जब आप एक बदलाव को धक्का देते हैं तो यह वहां होता है और जब तक कि आप इसे हटाने के लिए क्लोन के साथ सभी को प्राप्त नहीं कर लेते हैं और आपको भाग्य से बाहर निकलते हैं।

2

यह आपके प्रश्न से स्पष्ट नहीं है कि क्या उन परिवर्तनों को धक्का दिया गया है। यदि वे अभी भी स्थानीय हैं, तो आप आसानी से उनसे छुटकारा पा सकते हैं। कन्वर्ट एक विकल्प है। आप एमक्यू (Mercurial queues) का भी उपयोग कर सकते हैं। एक विस्तृत स्पष्टीकरण के लिए EditingHistory विकी आलेख देखें। यह एमक्यू को सबसे आसान दृष्टिकोण होने की सिफारिश करता है।

गलतियों उस तरह रोकने के लिए, आप शायद 'बुरे' अस्वीकार करने के लिए करता है, यह देखते हुए कि आप उन्हें प्रोग्राम के वर्णन कर सकते हैं एक हुक जोड़ना चाहिए;)

+0

मैं अपने आवेदन के डाटाबेस स्टोर करने के लिए तेज उपयोग करते हैं, तो मैं बस डीबी के हर बिट पर हस्ताक्षर किए और केवल एक जार किया। – amirouche

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