2010-09-07 11 views
64

मैंने अपने भंडार में गलत शाखा के खिलाफ गलती से आदेश चलाया है - क्या इस बदलाव को पूर्ववत करने का कोई तरीका है?क्या "गिट रिवर्ट हेड" के प्रभावों को पूर्ववत करने का कोई तरीका है?

+3

के आधार पर रीसेट के लिए दस्तावेज़ को पढ़ने के बाद नीचे सलाह, गिट रीसेट - हार्ड हेड ~ 1 ने इसे मेरे लिए हल किया। – blueberryfields

उत्तर

93

git revert सिर्फ बनाता है एक नया प्रतिबद्ध - आप git reset --hard HEAD^ साथ "निकालें" कर सकते हैं यह

+2

'गिट रीसेट - हार्ड हेड ^' से सावधान रहें क्योंकि यह किसी भी असामान्य परिवर्तन को हटा देगा। – Jeremen

+1

यदि आप 'गिट रीसेट' करने से पहले 'गिट स्टेश' करते हैं - हेड^'आप अपने अनचाहे परिवर्तनों को "सहेज सकते हैं"। 'गिट रीसेट - हार्ड हेड ^' के बाद मौजूदा शाखा में असामान्य परिवर्तनों को फिर से लोड करने के लिए 'गिट स्टैश पॉप' करें। – kukko

26

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

HEAD~ का मतलब है वर्तमान प्रमुख

+5

नहीं, यह डेटा मिटा नहीं देता है। यह सिर्फ आपकी शाखा सूचक को ले जाता है। पिछली प्रतिबद्धता अभी भी मौजूद है, और आप 'गिट रीफ्लॉग' (f.ex.) को देखकर अपनी आईडी देख सकते हैं। यह कचरा इकट्ठा हो जाएगा दो महीने (डिफ़ॉल्ट विन्यास), लेकिन आप स्वचालित कचरा संग्रह बंद कर सकते हैं, और फिर * हर एक प्रतिबद्ध * आप * कभी * बनाया उस भंडार में हमेशा के लिए मौजूद होगा। वे सिर्फ शाखाओं के माध्यम से पहुंच योग्य नहीं हैं। लेकिन आप उन्हें हमेशा 'गिट एफएसके' का उपयोग करके ढूंढ सकते हैं, और मैंने इसका उपयोग करने वाले सभी कामों को ब्राउज़ करने के लिए एक नुस्खा पोस्ट किया है। –

3

वापस कैसे जाऊं पूर्ववत करने के बारे से पहले प्रतिबद्ध?

git log -5

फिर पूर्ववत ही रिवर्स कार्य करें::

देखें Git लॉग और बुरे वापस लाएं के हैश टैग प्राप्त

git revert

+5

-1 यह एक और प्रतिबद्धता बनाएगा, जो वास्तव में यहां नहीं चाहता था – CharlesB

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