2011-08-27 9 views
70

यदि आप स्टेजिंग क्षेत्र में कोई प्रतिबद्धता लेना चाहते हैं - यह असामान्य है और इसमें सभी परिवर्तनों को स्थानांतरित किया गया है जो स्टेजिंग क्षेत्र में थे (प्रभावी रूप से राज्य में शाखा को डालकर कि यह प्रतिबद्धता से पहले होता) - आप इसे कैसे करते हो? या यह ऐसा कुछ है जिसे आप नहीं कर सकते?आप गिट में स्टेजिंग क्षेत्र में प्रतिबद्ध कैसे स्थानांतरित करते हैं?

निकटतम मुझे पता है कि कैसे करना है, उन सभी फ़ाइलों की प्रतिलिपि बनाना है जो प्रतिबद्धता में कहीं और बदले गए हैं, उस प्रतिबद्धता से पहले शाखा को रीसेट करें जिसे आप स्टेजिंग क्षेत्र में स्थानांतरित करने की कोशिश कर रहे हैं, सभी कॉपी की गई फ़ाइलों को वापस भंडार में ले जाएं, और फिर उन्हें स्टेजिंग क्षेत्र में जोड़ें। यह काम करता है, लेकिन यह वास्तव में एक अच्छा समाधान नहीं है। मैं जो करने में सक्षम होना चाहता हूं वह केवल प्रतिबद्धता को पूर्ववत कर रहा है और स्टेजिंग क्षेत्र में बदल रहा है। क्या यह किया जा सकता है? और यदि हां, तो कैसे?

उत्तर

132
git reset --soft HEAD^ 

यह आपकी अनुक्रमणिका को HEAD^(पिछली प्रतिबद्धता) में रीसेट कर देगा लेकिन स्टेजिंग क्षेत्र में आपके परिवर्तनों को छोड़ देगा।

git-reset डॉक्स

आप इस प्रारूप का उपयोग करने की आवश्यकता हो सकती आप Windows पर हैं में कुछ उपयोगी चित्र होते हैं: यह कुछ नहीं करता है, तो कोशिश `Git रीसेट --soft प्रमुख

git reset --soft HEAD~1 
+15

~ 1' जिसका अर्थ एक ही बात है लेकिन विंडोज़ पर भी काम करता है। –

+5

स्पष्टीकरण के लिए, टिल्ड और कैरोट का मतलब गिट संस्करणों में अलग-अलग चीजें हैं। हेड ~ 1 हमेशा एक प्रतिबद्धता के पहले माता-पिता का पालन करता है, जो शायद आप नहीं चाहते हैं कि यह एक विलय प्रतिबद्ध है जिसमें कई माता-पिता हैं। विंडोज सीएमडी शैल के बारे में, आपको सिर्फ गाजर से दूसरे कैरेट से बचने की जरूरत है। "गीट रीसेट - सॉफ्ट हेड ^^" "हेड ^" पर वापस जाने के लिए। यह पूरी तरह से विंडोज सीएमडी शैल का एक आर्टिफैक्ट है, इसलिए यदि आप विंडोज पर गिट जीयूआई का उपयोग करते हैं तो आपको ऐसा करने की ज़रूरत नहीं है। Tilde और carot http://schacon.github.io/git/git-rev-parse#_specifying_revisions पर समझाया गया है – ahains

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