2011-06-01 13 views
52

मुझे तैनाती के लिए स्थानीय परिवर्तनों को वापस करने की आवश्यकता है। (मैंने पुरानी स्कूल एसवीएन दिनों में svn revert का उपयोग किया था।)"गिट चेकआउट-एफ" और "गिट रीसेट - हार्ड हेड" के बीच क्या अंतर है?

और इसके लिए git reset --hard HEAD का उपयोग कर रहा हूं। (git fetch और git merge origin/$branch --no-ff अपस्ट्रीम शाखा के साथ सिंक्रनाइज़िंग के लिए।)

लेकिन कुछ लेख git checkout -f परिवर्तनों को वापस करने के लिए इंगित करते हैं।

इस आदेश के बीच महत्वपूर्ण अंतर क्या है। अनुशंसित किस तरह से किया जाता है?

+1

संभावित डुप्लिकेट [क्या "गिट रीसेट - हार्ड हैश" और "गिट चेकआउट हैश" के बीच कोई अंतर है?] (Http://stackoverflow.com/questions/2541545/is-there-a-difference-between -गिट-रीसेट-हार्ड-हैश-एंड-गिट-चेकआउट-हैश) – Casebash

उत्तर

37

उनमें से दोनों का सटीक प्रभाव समान है। मैं आपको उस समाधान का चयन करने की सलाह देता हूं जिसके साथ आप अधिक confortable हैं।

लेकिन यदि इस विशेष मामले में प्रभाव समान है, तो अलग-अलग मानों के साथ यह पूरी तरह अलग होगा। मूल रूप से (लिंक किए गए विषयों को और देखें) एक रीसेट के साथ आप वर्तमान शाखा और HEAD को एक विशिष्ट प्रतिबद्धता में ले जाते हैं लेकिन चेकआउट के साथ, आप केवल HEAD को ले जाते हैं। अधिक जानकारी के लिए नीचे देखें।


संसाधन:

एक ही विषय पर:

9

प्रतिनिधि अभी तक अन्य उत्तर पर टिप्पणी करने से नहीं है, मैं सिर्फ जोड़ने के लिए है कि मैं एक मामले में जहां दो आदेशों ही न हो में आए चाहता था प्रभाव। मैं एक अजीब स्थिति में आया तो यह निश्चित रूप से एक बढ़त मामला है। यहां क्या हुआ:

मैं एक शाखा में था, सबकुछ साफ है। मैंने मास्टर git checkout master की जांच की और git status से पाया कि प्रतिबद्ध फ़ाइलों के लिए चरणबद्ध नहीं होने वाली मौजूदा फ़ाइलों में परिवर्तन थे (हां, मैंने जिस कोड को अभी चेक आउट किया है)। मैंने एक साफ राज्य में जाने के लिए छेड़छाड़ की कोशिश की, दावा पूरा होने का दावा किया गया लेकिन git status अभी भी अपरिवर्तित था। git reset --hard HEAD भी कोशिश की। यह भी सफलतापूर्वक पूरा करने की सूचना दी अभी तक स्थिति अलग नहीं थी। मैं इन अजीब बदलावों को रद्द नहीं कर सका।

हालांकि, git checkout -f ने इसे हल किया। मैं इस अजीब स्थिति से दूर जाने में सक्षम था। तो, कम से कम कुछ तरीकों से, दोनों समान नहीं हैं।

+0

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

+1

हमारे मामले में, यह फ़ाइल अनुमतियों को बदलने के कारण था; यह इसे http: // stackoverflow तय किया।com/प्रश्न/1257592/कैसे करते हैं-ए-को दूर-फ़ाइलें-कह पुरानी-मोड-100,755 नए-मोड-100,644-से-unstaged-चा –

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