जीआईटी में स्टेजिंग क्षेत्र के लिए आप कैसे प्रतिबद्ध हैं?


143

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

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

जवाबों:


267
git reset --soft HEAD^

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

डॉक्स में कुछ आसान आरेख हैंgit-reset

यदि आप विंडोज पर हैं, तो आपको इस प्रारूप का उपयोग करने की आवश्यकता हो सकती है:

git reset --soft HEAD~1

18
यदि यह कुछ नहीं करता है, तो कोशिश करें git reset --soft HEAD~1जिसका मतलब एक ही है लेकिन यह विंडोज पर भी काम करता है।
रोमन स्टार्कोव

9
स्पष्ट करने के लिए, गिल्ड संस्करणों में टिल्ड और कैरोट का अर्थ अलग-अलग होता है। HEAD ~ 1 हमेशा एक कमिट के पहले माता-पिता का अनुसरण करता है, जो कि आप नहीं चाहते कि यह एक मर्ज कमिट है जिसमें कई माता-पिता हैं। विंडोज cmd शेल के बारे में, आपको बस एक अन्य कैरोट जैसे "git reset --soft HEAD ^^" को "HEAD ^" पर वापस जाने के लिए कैरोट से बचना होगा। यह विशुद्ध रूप से विंडोज सीएमडी शेल की एक कलाकृति है, इसलिए आपको ऐसा नहीं करना चाहिए यदि आप विंडोज पर गिट जीयूआई का उपयोग करते हैं। टिल्ड और carot में वर्णन किया गया है schacon.github.io/git/git-rev-parse#_specifying_revisions
ahains

मैंने "आसान चित्र" के लिए एक लिंक जोड़ा। क्या आप जल्दी से देख सकते हैं कि यह आपके द्वारा लिए गए खंड की ओर जाता है? धन्यवाद
न्यूरॉन

5

एक सरल तरीका

  1. स्टेजिंग एरिया में कमिट की गई फाइलें

    git reset --soft HEAD^1

  2. स्टेजिंग करने के लिए Unstage : ("git reset HEAD ..." का उपयोग करें)

    git reset HEAD git commands.txt or git reset HEAD *ds.txt

यहाँ, * -> सभी फाइलें ds.txt के साथ समाप्त हो जाती हैं।

स्पष्टता के लिए नीचे दी गई तस्वीर देखें:

यहां छवि विवरण दर्ज करें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.