जवाबों:
अपडेट (कुछ साल बाद)
यह केवल सूचकांक से हटाने के लिए तुच्छ है।
यह सच है: आप अपनी अनुक्रमणिका सामग्री को आसानी से पर्याप्त रूप से फ़ाइल को रीसेट कर सकते हैं, जैसा कि हाल ही में दिया गया उत्तर ( मैट कोनोली द्वारा लिखित ) बताता है:
git reset HEAD^ path/to/file/to/revert
HEAD^
फ़ाइल को पिछले एक से पहले पिछली सामग्री में अपनी सामग्री तक पहुंचने की अनुमति देता है ।
फिर आप कर सकते हैं git commit --amend
, जैसा कि मैंने मूल रूप से नीचे लिखा था।
मूल उत्तर (जनवरी 2011)
यदि यह आपकी अंतिम प्रतिबद्धता है (और आपने इसे कहीं भी नहीं धकेला है), तो आप इसमें संशोधन कर सकते हैं:
(पहला स्टाश या सेव b
)
git commit --amend
फिर बी हटाएं, फिर से कमिट करें। पुनर्स्थापना b और आपका काम हो गया।
--amend
वर्तमान शाखा की नोक में संशोधन करने के लिए उपयोग किया जाता है।
उस ट्री ऑब्जेक्ट को तैयार करें जिसे आप नवीनतम प्रतिबद्ध को हमेशा की तरह बदलना चाहते हैं (इसमें सामान्य -i / -o और स्पष्ट पथ शामिल हैं), और प्रतिबद्ध लॉग एडिटर को वर्तमान शाखा के सिरे से प्रतिबद्ध संदेश के साथ वरीयता दी जाती है।
आपके द्वारा बनाई गई प्रतिबद्धता वर्तमान टिप को बदल देती है - यदि यह एक मर्ज था, तो इसमें वर्तमान टिप के माता-पिता माता-पिता के रूप में होंगे - इसलिए वर्तमान शीर्ष प्रतिबद्ध को छोड़ दिया गया है।
git diff --name-only HEAD^
- (वैकल्पिक) अंतिम प्रतिबद्ध में परिवर्तित फ़ाइलों को सूचीबद्ध करने के लिए उपयोग करें।git reset HEAD^ path/to/file/to/revert
- इंडेक्स को उस अंतिम संस्करण में रीसेट करने के लिए, काम की नकल को अछूता छोड़कर।git commit --amend
- सूचकांक में बदलाव को शामिल करने के लिए अंतिम प्रतिबद्धता के लिए संशोधन करनाgit commit -a --amend
चरण 3 के लिए (यानी फ़ाइलें न जोड़ें) का उपयोग नहीं करना चाहिए , या आप अपने कार्य की प्रतिलिपि में परिवर्तन करेंगे जो आप निकालने की कोशिश कर रहे हैं। एक वैकल्पिक चरण 2.5 git checkout path/to/file/to/revert
आपके काम की प्रतिलिपि को भी साफ कर सकता है।
git rm --cached path/to/file/to/revert
से संयुक्त राष्ट्र की फाइल को पेड़ से हटाए बिना।
वैकल्पिक रूप से यदि आप उपयोग कर रहे हैं git gui
, तो आप "अंतिम अंतिम प्रतिबद्ध" विकल्प का चयन करें, जोड़ा गया फ़ाइल "चरणबद्ध" सूची में दिखाई देता है, इसे "अनस्ट्रस्टेड" सूची में ले जाने के लिए आइकन पर क्लिक करें और प्रतिबद्ध करें।
यदि आप अपने पिछले कमिट से b हटाना चाहते हैं
git rm --cached b (will preserve the file in the working tree but remove it from the index)
git commit --amend
यदि आप अपनी अंतिम प्रतिबद्धताओं में बी में सभी परिवर्तनों को हटाना चाहते हैं
(backup b)
(modify b to state before incorrect commit)
git commit --amend
(restore b)
git rm --cached
और बैकअप / पुनर्स्थापना नृत्य (-1) के साथ दूर करें।
एक विकल्प जिसमें सूचकांक हैकरी की आवश्यकता नहीं होती है, लेकिन फिर भी पुराने प्रतिबद्ध संदेश को संरक्षित करता है:
$ git reset HEAD^
$ git add <all the files you want, excluding the one you don't want>
$ git commit -C HEAD@{1}
मुझे यह पसंद है क्योंकि (ए) यह उन आज्ञाओं का उपयोग करता git add -p
है जिन्हें मैं नियमित रूप से उपयोग करता हूं, और (बी) मैं यह पता लगाने के लिए कर सकता हूं कि यह वही है जो मैं करना चाहता हूं।
... Then stash/delete b, re-commit..
, यहाँ शब्द नहीं होनाThen
चाहिएafter
? ---amend
stach / delete b के बाद, ...