2015-11-12 9 views
16

स्टेजिंग के बिना नो-प्रतिबद्ध आमतौर पर कमांड git revert स्वचालित रूप से प्रतिबद्ध लॉग संदेश के साथ कुछ काम करता है जो बताता है कि कौन सा काम वापस कर दिया गया था।गिट रिवर्ट -

स्वत: प्रतिबद्धता से बचने के लिए -n (या --no-commit) विकल्प है।

लेकिन इस आदेश के बाद, वापस की गई फाइलें चरणबद्ध क्षेत्र में हैं। मैं git reset HEAD कमांड का उपयोग करके उन्हें अस्थिर कर सकता हूं।

क्या प्रतिबद्धता और स्टेजिंग किए बिना प्रतिबद्धता को वापस करने का कोई सीधा तरीका है?

दूसरे शब्दों में: क्या इंडेक्स को छूए बिना केवल कार्यशील निर्देशिका में परिवर्तन लागू करने के लिए एक प्रतिबद्ध आदेश वापस करने के लिए प्रत्यक्ष आदेश है?

+0

यह कैसा दिखता है? यदि आपके पास कोई बदलाव नहीं है जो "इसे वापस कर रहा है" का अर्थ क्या है? –

+0

मैं बस स्थानीय फाइलों को उन पर वापस किए गए परिवर्तनों के साथ लागू करना चाहता हूं, जिनमें कोई काम नहीं है और स्टेजिंग क्षेत्र का कोई संचालन नहीं है। ऐसा होता है यदि आप 'git revert -n && git रीसेट HEAD' करते हैं लेकिन मैं इसे एक साथ करना चाहता हूं। – Wizard79

+2

आह, मैं समझता हूं - इसलिए आप वर्कडियर पर वापस किए गए परिवर्तनों को लागू करना चाहते हैं लेकिन चरणबद्ध नहीं हैं। अपने प्रश्न को दोबारा पढ़ने पर यह स्पष्ट प्रतीत होता है लेकिन मेरा पहला पठन उस अर्थ का सही ढंग से विश्लेषण नहीं करता है। –

उत्तर

21

इसके लिए कोई भी आदेश नहीं है। जैसा कि आपने पहले ही उल्लेख किया है, आप git revert -n को git reset के साथ जोड़ सकते हैं ताकि इंडेक्स में रिवर्सन पूर्ववत हो सके।

कि विधि इसके अलावा

, आप git apply -R का उपयोग एक पैच "लागू रिवर्स" करने के लिए कर सकते हैं, और आप git show के साथ एक पैच में एक प्रतिबद्ध चालू कर सकते हैं, तो:

$ git show <rev> | git apply -R 

एक ही प्रभाव है, के साथ एक महत्वपूर्ण (लेकिन सूक्ष्म) अंतर। मुझे git revert प्रलेखन से बोली और अपना जोर जोड़ें:

-n, --no-commit
Usually the command automatically creates some commits with commit log messages stating which commits were reverted. This flag applies the changes necessary to revert the named commits to your working tree and the index, but does not make the commits. In addition, when this option is used, your index does not have to match the HEAD commit. The revert is done against the beginning state of your index.

दूसरे शब्दों में, git revert -nमें चल रही है, और पर, सूचकांक, अपने काम के पेड़ को अद्यतन करने का एक पक्ष प्रभाव के साथ। git apply कमांड केवल कार्य-पेड़ पर (डिफ़ॉल्ट रूप से) चलाता है, और वास्तव में एक गिट भंडार के बाहर उपयोग किया जा सकता है।

+0

मुझे _error मिला: अपरिचित इनपुट_। कोई विचार क्या गलत हो सकता था? –

+0

@RobertPankowecki: https://www.google.com/search?&q=git+apply+unrecognized+input रंगीन diffs के बारे में एक StackOverflow पोस्ट पर अपनी पहली हिट है। यह सबसे संभावित समस्या की तरह लगता है। – torek

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