2011-04-07 18 views
27

मैंने गलती से अब एकगिट प्रतिबद्ध करने से पहले हटाएं?

git rm filename.txt -f

किया अगर मैं एक git commit -m '' करते हैं, यह इसे हटाना प्रतिबद्ध होगा। गिट प्रतिबद्ध करने से पहले मैं इसे कैसे हटा सकता हूं?

+0

मुझे उम्मीद है कि आप खाली संदेशों के साथ काम करने की आदत में नहीं हैं ... – Cascabel

+0

यह शर्मनाक है, लेकिन हाँ ... मैं ऐसा करने की कोशिश करता हूं जब मैं उपversण का उपयोग कर रहा था। लेकिन सौभाग्य से, डिफ़ॉल्ट रूप से गिट प्रतिबद्धता मुझे एक संदेश के लिए पूछती है – John

+2

हाँ, मेरी अनुशंसित अभ्यास केवल 'गिट प्रतिबद्ध' (कोई तर्क नहीं) चलाने के लिए होगी और इसे संपादक खोलने और आपको साथ में घुसने देंगी। – Cascabel

उत्तर

52

वर्तमान से संस्करण प्राप्त करने के लिए दोनों सूचकांक (मंचन क्षेत्र, तुम क्या कर रहे हैं के बारे में प्रतिबद्ध करने के लिए) और काम पेड़ में प्रतिबद्ध (HEAD):

git checkout HEAD filename.txt 

ध्यान दें कि यह सिर्फ नहीं है "अपरिवर्तनीय" के लिए - यह आपको प्रतिबद्धता से संस्करण पर वापस लाने के लिए है, भले ही आपने इसे एक पंक्ति को बदलकर या पूरी फ़ाइल को हटाकर संशोधित किया हो।

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

git checkout filename.txt 

कि जब के लिए आसान है आप प्रतिबद्धता के लिए सबकुछ चरणबद्ध करने में कामयाब होते हैं, फिर कुछ बेवकूफ करें (जैसे फ़ाइल को निकालें) - आप इंडेक्स से पुनर्प्राप्त करके स्वयं को बचा सकते हैं।

+0

+1 विशेष रूप से यह उल्लेख करने के लिए कि यह फ़ाइल को भी चरणबद्ध करता है - मुझे लगता है कि यह भ्रम का कारण बनता है (वैसे भी) लोग आमतौर पर इसका उल्लेख नहीं करते हैं, 'गिट चेकआउट - ' –

+0

@Mark: Ah, हाँ, यह आपको आश्चर्य से पकड़ सकता है। यह अधिक समझ में आता है यदि आप इंडेक्स के बारे में सोचते हैं कि कार्य पेड़ और सभी परिचालनों के लिए भंडार, केवल पेड़ -> अनुक्रमणिका -> प्रतिबद्ध नहीं है। – Cascabel

+0

आप आदमी हैं! –

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