2011-10-26 17 views
19

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

क्या ऐसा करने का उनका आदेश है?

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

o [master] Commit #6 
| 
o Commit #5 
| 
| o Commit #4 
|/ 
o Commit #3 
| 
o Commit #2 
| 
o Commit #1 

मैं प्रतिबद्ध # 4 शारीरिक रूप से हटाना चाहते हैं:

यहाँ काम कर पेड़ है।

+0

क्या आप "चारों ओर प्रतिबद्धता" पर विस्तृत जानकारी दे सकते हैं? – greg0ire

+0

@ greg0ire अच्छी तरह से, प्रतिबद्धता अभी भी मौजूद है, लेकिन किसी और चीज़ से जुड़ा हुआ है .. यही एक रिबेस है: प्रतिबद्ध माता-पिता को बदलना ... नहीं? – FMaz008

+0

इंटरैक्टिव रीबेस में, आपको उस प्रतिबद्धता के साथ पूरी तरह से लाइन को हटाना होगा जिसे आप हटाना चाहते हैं। प्रतिबद्धता को वापस लेना एक निर्दिष्ट प्रतिबद्धता को लागू करने वाला एक नया प्रतिबद्धता है। यह सिर्फ एक और प्रतिबद्धता जोड़ता है जिसे आपको हटाना होगा। रिबेस का प्रयास करें और पूरी तरह से लाइन को हटा दें। –

उत्तर

28

यदि प्रतिबद्धता किसी भी चीज़ द्वारा संदर्भित नहीं है, तो इसे समय में गिट के कचरे के संग्रह से हटा दिया जाएगा।

आप पहले से यह मजबूर करने के लिए चाहते हैं, git gc --prune=now --aggressive

+0

वैसे मैं एक शाखा में था, फिर मैंने एक प्रतिबद्धता की है, फिर मैंने एक जीयूआई के साथ प्रतिबद्धता को वापस कर दिया (मुझे लगता है कि यह एक हार्ड रीसेट के अनुरूप है)। तो अब मेरी प्रतिबद्धता सभी शाखाओं से बाहर है, लेकिन प्रतिबद्धता अभी भी एक शाखा के लिए "माता-पिता" है। मैंने आदेश की कोशिश की है, लेकिन मेरे पास अभी भी मेरा बेकार काम है :( – FMaz008

+0

गिट में प्रतिबद्धता को वापस लेना सिर्फ प्रतिबद्धता नहीं ले रहा है। यह वास्तव में प्रतिबद्धता के विपरीत लागू होता है। यदि आप जिस प्रतिबद्धता को नहीं चाहते हैं वह है शाखा की नोक, 'गीट रीसेट - शार्ड शाओफ्लास्ट गॉडकॉमिट' का उपयोग करें। इससे खराब प्रतिबद्धताएं दूर हो जाएंगी और आपकी शाखा की नोक को अंतिम अच्छी प्रतिबद्धता में ले जाया जाएगा। – Andy

+0

मैंने पहले ही रीसेट किया है - दो बार .. । उसने केवल शाखा सिर ("मास्टर टैग") को उस प्रतिबद्धता में बदल दिया जिसे मैं हटाना चाहता था, फिर मैंने इसे वास्तविक शाखा के सिर पर बदल दिया, लेकिन जिस प्रतिबद्धता को मैं हटाना चाहता हूं वह अभी भी है। – FMaz008

2

का प्रयोग कर एक प्रतिबद्ध निकालने के लिए, तुम सिर्फ यकीन है कि यह किसी भी शाखा का भाग नहीं है बनाने की जरूरत है। यही है, आपके भंडार में प्रत्येक शाखा के लिए, सुनिश्चित करें कि खराब प्रतिबद्धता उस शाखा को परिभाषित करने वाली गतिविधियों की बाल-से-मूल श्रृंखला का हिस्सा नहीं है। अगर आपको ऐसी शाखा मिलती है, या तो इसे हटा दें, या अपना इतिहास बदल दें ताकि इसमें बुरा प्रतिबद्धता शामिल न हो।

एक बार यह सच होने के बाद, खराब प्रतिबद्धता अंततः कचरा इकट्ठा हो जाएगी।

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