2014-06-19 19 views
5

मैं Git में एक निश्चित 'हैश' नंबर पर वापस लौटने की कोशिश कर रहा हूँ दिया गया था 'वापस लौटने' कमांड का उपयोग करके,।Git <hash> किसी मर्ज के कारण अनुमति नहीं लौट जाते लेकिन कोई -m विकल्प

मैं निम्न आदेश का उपयोग कर रहा:

git revert c14609d74eec3ccebafc73fa875ec58445471765 

लेकिन, मुझे लौटे निम्न हो रही है:

error: Commit c14609d74eec3ccebafc73fa875ec58445471765 is a merge but no -m option was given.
fatal: revert failed

एक नया Git उपयोगकर्ता के रूप में, कृपया आप व्याख्या कर सकते हैं क्या हो रहा है कि मैं क्या & इसे हल करने के लिए करना है।

मैं इस निश्चित प्रतिबद्धता (c14609d74eec3ccebafc73fa875ec58445471765) पर वापस लौटना चाहता हूं जो कि git log चलाते समय मुझे दिखाई देता है।

+0

संभावित गलती [गिट विलय पूर्ववत करें]] (http://stackoverflow.com/questions/2389361/undo-a-git-merge) –

उत्तर

13

आप किसी मर्ज के लिए प्रतिबद्ध वापस लौटने की कोशिश कर रहे हैं, और Git जो माता-पिता को वापस करना नहीं जानता है। -m हमें यह चुनने की अनुमति देता है कि कौन से माता-पिता को चुनना है। विलय प्रतिबद्धता देखें और ध्यान दें कि आप किस माता-पिता को जाना चाहते हैं। माता-पिता के बारे में जानकारी git log में देखा जा सकता है, उदाहरण के लिए:

commit d02ee0f2179def10277f30c71c5d6f59ded3c595

Merge: dd3a24c 2462a52

और चलाएँ:

git revert <hash> -m 1 

जहां 1 माता पिता संख्या 1.

इंगित करता है आप को वापस लौटने की कोशिश कर रहे हैं कि प्रतिबद्ध करें, करें:

git reset --hard <hash> 

दस्तावेज़ों से git revert और git reset के बीच अंतर को समझें और तय करें कि आप कौन सा चाहते हैं। git revert सुरक्षित विकल्प है, लेकिन वास्तव में वह नहीं करता जो आप चाहते हैं। यह सिर्फ एक (सेट) प्रतिबद्धता के परिवर्तनों को बदल देता है। git reset आपको इतिहास में किसी विशेष प्रतिबद्धता में स्थानांतरित करता है, और आपके इतिहास को फिर से लिख देगा।

+1

मैनोज़ल्ड, पूर्ण 'गिट लॉग' कमांड क्या था जो आप भाग गए थे माता पिता को देखें? –

2

I want to revert back to ...

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

git reset आदेश यहाँ उपयोग करने के लिए है।

git reset --hard c14609d74eec3ccebafc73fa875ec58445471765 पूरी तरह से है कि विशिष्ट करने के लिए प्रतिबद्ध अपनी शाखा, सूचकांक और काम पेड़ रीसेट करता है।

ध्यान दें कि सामान्य सावधानियों लागू होते हैं: यदि किसी और को लाया था बाद में, पहले से ही करता है उन्हें इतिहास से निकालने यह उनके लिए मायने रखती है पेचीदा की तरह। आप के बजाय बनाने के लिए एक नया प्रतिबद्ध, जो केवल c14609d74eec3ccebafc73fa875ec58445471765 प्रतिबद्ध की है कि राज्य को पुनर्स्थापित करता चाहते हैं, आप git rm और git checkout उपयोग कर सकते हैं:

git rm -r . 
git checkout c14609d74eec3ccebafc73fa875ec58445471765 . 

(rm यकीन है कि नए जोड़े गए फ़ाइलों को भी निकल जाते हैं बनाने के लिए की जरूरत है।) यह आपको तो बनाने के लिए एक नया, प्रतिबद्ध आपके स्थानीय इतिहास है, जो c14609d74eec3ccebafc73fa875ec58445471765 के बाद से हर बदलाव नाश कर देती है की चोटी पर देता है।

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