सामग्री पर जाएं
GitTree
गिट गाइड22 मिनट पढ़ा

Git में अंतिम कमिट को कैसे संशोधित करें (संदेश, फ़ाइलें, लेखक और पूर्ववत करें)

चाहे आपने अपने कमिट संदेश में कोई टाइपो त्रुटि देखी हो, किसी फ़ाइल को चरणबद्ध करना भूल गए हों, गलती से कोई रहस्य बना दिया हो, या गलत लेखक ईमेल का उपयोग किया हो, git commit --amend आपकी शाखा को "टाइपो ठीक करें" कमिट से अव्यवस्थित किए बिना टिप कमिट को साफ़-साफ़ बदल देता है।

द्वारा लिखित Kodmora

GitTree के पीछे सॉफ्टवेयर हाउस

प्रकाशित अद्यतन किया गया
  • कमिट
  • स्टेजिंग
  • इतिहास कमिट करें
  • पूर्ववत करें और पुनर्प्राप्त करें
  • पुनः आधार
इस पेज पर

अपनी वर्तमान शाखा पर नवीनतम कमिट को ठीक करने के लिए, git commit --amend चलाएँ। यदि कुछ भी चरणबद्ध नहीं है, तो Git कमिट को आपके अद्यतन संदेश से बदल देता है; यदि आप पहले नए परिवर्तन करते हैं, तो Git उन चरणबद्ध परिवर्तनों को कमिट में मोड़ देता है और आपको मौजूदा संदेश को --no-edit के साथ रखने या उसे उसी स्थान पर फिर से लिखने की सुविधा देता है। क्या आप विज़ुअल वर्कफ़्लो को प्राथमिकता देते हैं? GitTree में macOS, Windows और Linux पर, कमिट पैनल में पिछले कमिट में संशोधन करें चालू करें (या ग्राफ़ में शीर्ष कमिट पर राइट-क्लिक करें और कमिट संदेश संपादित करें... चुनें) संदेश को पहले से भरने के लिए, अलग-अलग लाइनों को स्टेज या अनस्टेज करें, पुश किए गए इतिहास को फिर से लिखने से पहले एक रिमोट-ब्रांच चेतावनी देखें, और एक-क्लिक अनडू के साथ किसी भी समय पुनर्प्राप्त करें।

त्वरित संदर्भ: प्रत्येक git कमिट --अमेंड कमांड

सटीक कमांड चुनें जो आपके नवीनतम कमिट में जो गलत है उससे मेल खाता हो - या किनारे के मामलों, हुक, हस्ताक्षरित कमिट और विज़ुअल विकल्पों के लिए नीचे दिए गए विस्तृत अनुभाग पर जाएं।

Git में अंतिम कमिट में संशोधन करने के सामान्य तरीके, प्रत्येक कमांड क्या बदलता है, और क्या यह कमिट SHA को फिर से लिखता है।
आप क्या ठीक करना चाहते हैंचलाने का आदेशकमिट का क्या होता है
अंतिम कमिट संदेश (इनलाइन) में एक टाइपो को ठीक करेंgit commit --amend -m "New message"नए संदेश और वर्तमान में चरणबद्ध परिवर्तनों को ले जाने वाली नई कमिट के साथ HEAD को प्रतिस्थापित करता है
अपने संपादक में एक बहु-पंक्ति कमिट संदेश संपादित करेंgit commit --amendआपके कॉन्फ़िगर किए गए Git संपादक को मौजूदा विषय और मुख्य भाग के साथ खोलता है जो पहले से भरा हुआ है
केवल संदेश को दोबारा लिखें (चरणबद्ध फ़ाइलों को अनदेखा करें)git commit --amend --only -m "New message"आपके वर्तमान स्टेजिंग क्षेत्र को अगले कमिट के लिए अछूता छोड़ते हुए HEAD के कमिट संदेश को फिर से लिखता है
कोई भूली हुई फ़ाइल जोड़ें और वही संदेश रखेंgit add <file> && git commit --amend --no-editटेक्स्ट एडिटर को खोले बिना अंतिम कमिट में <file> को मोड़ देता है
अंतिम कमिट में विशिष्ट पंक्तियाँ या हंक जोड़ेंgit add -p && git commit --amend --no-editआपको चयनित हंक्स को अंतःक्रियात्मक रूप से स्टेज करने की सुविधा देता है, फिर केवल उन हंक्स को HEAD में मोड़ देता है
सभी संशोधित ट्रैक की गई फ़ाइलों को अंतिम कमिट में मोड़ेंgit commit -a --amend --no-editप्रत्येक संशोधित या हटाई गई ट्रैक की गई फ़ाइल को चरणबद्ध करता है और HEAD को एक चरण में संशोधित करता है (अनट्रैक की गई फ़ाइलों को अनदेखा कर दिया जाता है)
गलती से हुई फ़ाइल को हटाएँ (डिस्क पर रखें)git restore --source=HEAD~1 --staged <file> && git commit --amend --no-editआपकी स्थानीय वर्किंग ट्री फ़ाइल को बरकरार रखते हुए इंडेक्स में <file> को वापस HEAD~1 पर वापस लाता है
अंतिम कमिट पर लेखक का नाम और ईमेल ठीक करेंgit commit --amend --reset-author --no-editआपके वर्तमान user.name और user.email कॉन्फिगरेशन से मिलान करने के लिए कमिट लेखक (और टाइमस्टैम्प) को अपडेट करता है
पुश किए गए कमिट में संशोधन करने के बाद शाखा को अपडेट करेंgit push --force-with-lease --force-if-includesरिमोट शाखा को सुरक्षित रूप से केवल तभी अपडेट करता है जब किसी टीम के साथी ने नई कमिटों को आगे नहीं बढ़ाया है और आपके स्थानीय रीफ्लॉग में रिमोट टिप शामिल है
किसी आकस्मिक git commit --amend को पूर्ववत करेंgit reset --soft HEAD@{1}किसी भी अतिरिक्त परिवर्तन को चरणबद्ध रखते हुए शाखा सूचक को पूर्व-संशोधन कमिट पर वापस ले जाता है

वास्तव में हुड के तहत git Commit --amend क्या करता है

प्रत्येक Git कमिट हैश एक क्रिप्टोग्राफ़िक चेकसम (SHA-1 या SHA-256) है, जिसकी गणना डेटा के पांच टुकड़ों से की जाती है: रूट ट्री स्नैपशॉट, पैरेंट कमिट हैश(एस), लेखक नाम/ईमेल/टाइमस्टैंप, कमिटर नाम/ईमेल/टाइमस्टैंप, और कमिट संदेश। संदेश में एक भी अक्षर बदलें - या एक सेकंड बाद कमिटर टाइमस्टैम्प - और परिणामी हैश पूरी तरह से अलग है।

# Before git commit --amend:
A --- B --- C  <-- main (HEAD)

# After git commit --amend:
A --- B --- C' <-- main (HEAD)
       \
        C      (still in git reflog as HEAD@{1} until garbage collection)

जब आप git commit --amend चलाते हैं, तो Git वर्तमान में स्टेजिंग क्षेत्र (सूचकांक) में जो कुछ भी है, उसे ले लेता है, इसे C (B) के पैरेंट पॉइंटर के साथ जोड़ता है, एक नया कमिट ऑब्जेक्ट C' लिखता है, और आपके वर्तमान शाखा संदर्भ को बिंदु C' पर अपडेट करता है। मूल कमिट C को तुरंत हटाया नहीं जाता है: यह आपके स्थानीय रीफ्लॉग (HEAD@{1}) में कम से कम 30 से 90 दिनों (gc.reflogExpireUnreachable) तक दर्ज रहता है, यही कारण है कि एक आकस्मिक संशोधन हमेशा स्थानीय रूप से पुनर्प्राप्त किया जा सकता है - या तो git reflog के माध्यम से या GitTree के पूर्ववत करें और फिर से करें और खोया और पाया टूल के माध्यम से।

1. अंतिम कमिट संदेश बदलें

यदि आपने अभी-अभी गलती की है और तुरंत कोई टाइपो त्रुटि, गलत जीरा/GitHub अंक संख्या, या कोई गुम Conventional Commits उपसर्ग (feat:, fix:, chore:) देखा है, तो पहले git status जांचें ताकि आप जान सकें कि कुछ भी गलत है या नहीं।

-एम के साथ एक नया एक-पंक्ति या बहु-पैराग्राफ संदेश पास करें

किसी संपादक को लॉन्च किए बिना संदेश को सीधे टर्मिनल से बदलने के लिए, -m पास करें। विषय पंक्ति और मुख्य अनुच्छेद बनाने के लिए आप अनेक -m झंडों को श्रृंखलाबद्ध कर सकते हैं:

# Replace the commit subject inline
git commit --amend -m "fix(auth): validate refresh token expiry before rotation"

# Replace both the subject line and body paragraph
git commit --amend \
  -m "fix(auth): validate refresh token expiry before rotation" \
  -m "Prevents expired tokens from issuing a new session when clock skew exceeds 30s."

अपने टेक्स्ट एडिटर में मौजूदा संदेश को संपादित करें

जब आपके कमिट में पहले से ही एक विस्तृत बहु-पंक्ति विवरण, ट्रेलर (Co-authored-by:, Signed-off-by:), या ऐसे संदर्भ जारी हों जिन्हें आप दोबारा टाइप नहीं करना चाहते हैं, तो -m के बिना git commit --amend चलाएं:

git commit --amend

Git आपके कॉन्फ़िगर किए गए core.editor (विम, नैनो, वीएस कोड, जेड, आदि) को पहले से लोड किए गए वर्तमान कमिट संदेश के साथ खोलता है। संशोधित कमिट लिखने के लिए फ़ाइल को सहेजें और बंद करें। यदि संपादक के खुले होने पर आप अपना मन बदलते हैं, तो संपूर्ण कमिट संदेश हटा दें (फ़ाइल को खाली छोड़ दें) और सहेजें—गिट Aborting commit due to empty commit message के साथ संशोधन को निरस्त कर देता है और HEAD को अछूता छोड़ देता है।

2. भूली हुई फ़ाइलें या विशिष्ट पंक्तियाँ अंतिम कमिट में जोड़ें

किसी फ़ाइल को सहेजना, परीक्षण फ़िक्स्चर का स्टेजिंग करना, या कमिट करने से पहले अपना फ़ॉर्मेटर चलाना भूल जाना डेवलपर्स द्वारा --amend तक पहुंचने का सबसे आम कारण है। पहले लापता परिवर्तनों को चरणबद्ध करें, फिर --no-edit के साथ संशोधन करें ताकि Git संपादक को खोले बिना मौजूदा कमिट संदेश को बनाए रखे:

# Stage the forgotten file (or files)
git add src/auth/token-validator.test.ts

# Fold the staged file into the last commit and keep the existing message
git commit --amend --no-edit

संशोधन से पहले केवल विशिष्ट पंक्तियों या खंडों को चरणबद्ध करें

क्या होगा यदि आपके वर्किंग ट्री में पिछले कमिट में शामिल 3-लाइन फ़िक्स और डिबग लॉगिंग की 40 लाइनें या आपके अगले फीचर के लिए काम करने वाली दोनों लाइनें शामिल हैं? git add . या git commit -a --amend न चलाएं. इसके बजाय, पैच मोड का उपयोग करके पिछली कमिट में मौजूद सटीक हिस्सों या रेखाओं को ही चरणबद्ध करें (हमारे git add -p और विशिष्ट पंक्तियों को व्यवस्थित करने के लिए मार्गदर्शिका में विस्तार से बताया गया है):

# Choose y/n/s (split) for each changed hunk
git add -p src/auth/token-validator.ts

# Verify what is staged vs what stays in the working tree
git diff --staged

# Amend the last commit with only the staged hunks
git commit --amend --no-edit

GitTree में, ऐसा करने के लिए आपको कभी भी टर्मिनल हंक स्प्लिटिंग (s, e) के साथ संघर्ष नहीं करना पड़ेगा: अनस्टेज्ड चेंजेस में किसी भी फ़ाइल पर क्लिक करें, सटीक पंक्तियों का चयन करें या साइड-बाय-साइड या इनलाइन अंतर में Stage Hunk पर क्लिक करें, और पिछली कमिट में संशोधन करें को टॉगल करें। यह देखने के लिए कि कैसे चरणबद्ध बनाम अचरणीय अंतर का निरीक्षण करना, आकस्मिक कोड को एक संशोधित कमिट में फिसलने से रोकता है, हमारी गिट डिफ गाइड देखें।

अलग-अलग हिस्सों और पंक्तियों को एक कमिट में बदलने से पहले उन्हें GitTree में व्यवस्थित करना—असंबद्ध कार्य को स्टेज न रखना।
अलग-अलग हिस्सों और पंक्तियों को एक कमिट में बदलने से पहले उन्हें GitTree में व्यवस्थित करना—असंबद्ध कार्य को स्टेज न रखना।GitTree प्रदर्शन भंडार के साथ इंटरफ़ेस।

3. गलती से हुई फ़ाइल को हटाएँ (डिस्क से हटाए बिना)

मान लीजिए कि आपने git add . चलाया और गलती से एक .env.local फ़ाइल, एक बड़ी बिल्ड आर्टिफैक्ट, या एक फ़ाइल जो एक अलग पुल अनुरोध में है, कमिट हो गई। आप इसे HEAD से कैसे हटाते हैं यह इस बात पर निर्भर करता है कि फ़ाइल कमिट में HEAD (HEAD~1) से पहले मौजूद थी या HEAD में नई जोड़ी गई थी।

केस ए: अंतिम कमिट से नई जोड़ी गई फ़ाइल को हटाएं (स्थानीय फ़ाइल रखें)

भौतिक फ़ाइल को अपनी डिस्क पर छोड़ते समय स्टेजिंग इंडेक्स से फ़ाइल को हटाने के लिए git rm --cached का उपयोग करें, फिर संशोधन करें:

# Remove the file from the index only (leaves the file on disk)
git rm --cached .env.local

# Optional: add it to .gitignore so it never gets staged again
echo ".env.local" >> .gitignore
git add .gitignore

# Rewrite the last commit without .env.local
git commit --amend --no-edit

केस बी: अंतिम कमिट में ट्रैक की गई फ़ाइल में संपादन वापस लाएं (स्थानीय संपादन रखें)

यदि <file> को पहले से ही HEAD~1 में ट्रैक किया गया था और आपने गलती से इसमें HEAD में संपादन शामिल कर दिया था, तो git rm --cached का उपयोग नहीं करें (जो कि HEAD में फ़ाइल विलोपन को रिकॉर्ड करेगा!)। इसके बजाय, उस फ़ाइल के लिए अनुक्रमणिका प्रविष्टि को HEAD~1 से पुनर्स्थापित करें:

# Reset only the staged index state of <file> back to HEAD~1
git restore --source=HEAD~1 --staged src/config/database.ts

# Amend HEAD: the commit no longer touches database.ts, and your local edits stay in the working tree
git commit --amend --no-edit

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

4. अंतिम कमिट का लेखक, ईमेल या टाइमस्टैम्प बदलें

जब आप सेटिंग करने से पहले एक नए लैपटॉप पर कमिट करते हैं, user.email, या किसी कार्य रिपॉजिटरी के अंदर कमिट करते हैं, जबकि आपका व्यक्तिगत GitHub ईमेल विश्व स्तर पर कॉन्फ़िगर किया जाता है, तो कमिट गलत पहचान रिकॉर्ड करता है। git commit --amend किसी भी फ़ाइल को छुए बिना कमिट के मेटाडेटा को फिर से लिख सकता है।

# Option 1: Set an explicit author name and email on the last commit
git commit --amend --author="Jane Doe <jane@company.com>" --no-edit

# Option 2: Update git config first, then reset the commit author to match
git config user.name "Jane Doe"
git config user.email "jane@company.com"
git commit --amend --reset-author --no-edit

# Option 3: Amend the author date as well
git commit --amend --date="2026-11-11T14:30:00+02:00" --no-edit

5. जिस कमिट को आप पहले ही पूरा कर चुके हैं उसे सुरक्षित रूप से कैसे संशोधित करें

जैसे ही आप उस कमिट में संशोधन करते हैं जिसे पहले ही origin पर पुश दिया गया था, आपकी स्थानीय शाखा और रिमोट-ट्रैकिंग शाखा (origin/<branch>) अलग हो जाती हैं: आपकी स्थानीय शाखा में C' है, जबकि origin में अभी भी C है। दोनों शेयर पैरेंट के लिए कमिट हैं B।

यदि शाखा आपकी अपनी सुविधा या पुल-अनुरोध शाखा है, तो रिमोट को --force-with-lease (और Git 2.30+ में --force-if-includes) के साथ सुरक्षित रूप से अपडेट करें:

# Safely replace the remote branch tip with your amended commit
git push --force-with-lease --force-if-includes origin HEAD
  • क्यों `--force` के बजाय `--force-with-lease`: सादा git push --force दूरस्थ शाखा को आँख बंद करके अधिलेखित कर देता है, आपके अंतिम फ़ेच के बाद से किसी भी टीम के साथी या सीआई बॉट द्वारा किए गए किसी भी कमिट को मिटा देता है। --force-with-lease जाँच करता है कि origin/<branch> अभी भी आपके स्थानीय रिमोट-ट्रैकिंग रेफरी में संग्रहीत सटीक कमिट एसएचए को इंगित करता है; यदि इस बीच किसी और ने पुश किया, तो Git ने अपना काम खोने के बजाय पुश को अस्वीकार कर दिया।
  • क्या `--force-if-includes` जोड़ता है: यदि आपके पास पृष्ठभूमि ऑटो-फ़ेचिंग सक्षम है, तो आपका रिमोट-ट्रैकिंग रेफरी आपके पुश करने से पहले अपडेट हो सकता है। --force-if-includes सत्यापित करता है कि पुनर्लेखन की अनुमति देने से पहले दूरस्थ शाखा की नोक पर कमिट वास्तव में आपके स्थानीय रिफ्लॉग में एकीकृत की गई थी।
  • जब आप `main` या किसी साझा शाखा पर हों: उस साझा शाखा में संशोधन और दबाव न डालें, जिस पर अन्य डेवलपर अपना काम आधारित करते हैं। इसके बजाय, कमिट को बरकरार रखें और एक नई फिक्स कमिट को पुश करें, या इसे git revert के साथ स्पष्ट रूप से उलट दें (हमारी कमिट और मर्ज को पूर्ववत करने के लिए गाइड और पुश की गई गलतियों को पुनर्प्राप्त करें ट्यूटोरियल देखें)।
  • पहले अपनी ट्रैकिंग शाखा को कॉन्फ़िगर करने की आवश्यकता है? देखें Git में अपस्ट्रीम शाखा कैसे सेट करें।

6. यदि आपको जिस कमिट में संशोधन करने की आवश्यकता है वह अंतिम कमिट नहीं है तो क्या होगा?

git commit --amend केवल कभी भी पुनः लिखता है HEAD (टिप कमिट)। जब टाइपो या गायब परिवर्तन HEAD~2 में होता है या तीन कमिट वापस आते हैं, तो आपके पास दो साफ़ विकल्प होते हैं - मैन्युअल रूप से छिपाने और चेरी-पिकिंग के बिना:

विकल्प 1: गिट कमिट --फिक्सअप के साथ फास्ट CLI ऑटोस्क्वैश

Stage the fix, create a --fixup commit targeting the older commit’s SHA (or --fixup=amend:<sha> to also edit its message), and run git rebase -i --autosquash:

# 1. Stage the changes meant for the older commit (e.g. a1b2c3d)
git add src/api/client.ts

# 2. Create a fixup commit targeting a1b2c3d
git commit --fixup=a1b2c3d

# 3. Autosquash the fixup commit straight into a1b2c3d
GIT_SEQUENCE_EDITOR=: git rebase -i --autosquash a1b2c3d~1

विकल्प 2: विज़ुअल इंटरएक्टिव रीबेस GitTree में

SHAs की प्रतिलिपि बनाने और टर्मिनल में रीबेस टूडू फ़ाइलों को संपादित करने के बजाय, हमारा पूरा इंटरैक्टिव रीबेस जीयूआई गाइड और ब्रांच रीबेस गाइड पढ़ें। GitTree के इंटरैक्टिव रीबेस और रिवर्ड, स्क्वैश एंड ड्रॉप प्लानर में, ग्राफ़ में किसी भी पुराने कमिट पर राइट-क्लिक करें, यहाँ से इंटरएक्टिव रीबेस चुनें..., उस कमिट को रिवर्ड पर स्विच करें या उस पर एक फिक्स कमिट को फिक्सअप/स्क्वैश पर खींचें, और एक क्लिक में लागू करें।

GitTree के इंटरैक्टिव रीबेस डायलॉग में दृश्य रूप से पुराने कमिट को दोबारा लिखना, कुचलना और फिर से व्यवस्थित करना।
GitTree के इंटरैक्टिव रीबेस डायलॉग में दृश्य रूप से पुराने कमिट को दोबारा लिखना, कुचलना और फिर से व्यवस्थित करना।GitTree प्रदर्शन भंडार के साथ इंटरफ़ेस।

7. किसी आकस्मिक गिट कमिट को कैसे पूर्ववत करें --संशोधन करें

क्या आपने अनपेक्षित फ़ाइलों के चरणबद्ध होने के दौरान git commit --amend चलाया था, या गलती से आपके लिए आवश्यक कमिट संदेश को अधिलेखित कर दिया था? क्योंकि Git स्थानीय रीफ्लॉग में HEAD की प्रत्येक गतिविधि को रिकॉर्ड करता है, आपकी पूर्व-संशोधन कमिट अभी भी HEAD@{1} पर सुरक्षित रूप से मौजूद है।

# 1. Inspect the reflog to see the amend and the commit before it
git reflog -n 5
# e9f8d7c (HEAD -> feature) HEAD@{0}: commit (amend): feat: add billing webhook
# 4a3b2c1 HEAD@{1}: commit: feat: add billing webhook

# 2. Restore the branch to the pre-amend commit and keep any extra changes staged
git reset --soft HEAD@{1}

Using git reset --soft HEAD@{1} puts your branch pointer right back on the original commit (4a3b2c1) and leaves the difference between the amended commit and the original commit staged in your index—nothing in your working tree is lost. For a deep dive into soft, mixed, and hard resets and reflog recovery, read Git reset --soft vs --mixed vs --hard, how to undo git reset, rebase, or commit with reflog, and how to recover dropped stashes and dangling commits.

गिट कमिट का उपयोग कब करें - संशोधन बनाम रीसेट, रिवर्ट, या रिबेस -आई

जब भी आपको इतिहास को ठीक करने की आवश्यकता हो तो इस निर्णय मैट्रिक्स का उपयोग करें ताकि आप वह कमांड चुनें जो आपके कमिट की स्थिति से मेल खाता हो और क्या टीम के साथियों ने इसे पुल लिया है:

गिट कमिट --अमेंड, गिट रीसेट --सॉफ्ट, गिट रिबेस -आई, और गिट रिवर्ट के बीच चयन करना।
आदेशलक्ष्य कमिटSHA को फिर से लिखता है?सबसे अच्छा उपयोग कब किया जाए
git commit --amendकेवल नवीनतम कमिट (HEAD)।हाँआप नवीनतम कमिट संदेश को दोबारा लिखना चाहते हैं, भूले हुए चरणबद्ध परिवर्तनों को जोड़ना चाहते हैं, या किसी स्थानीय या व्यक्तिगत शाखा पर लेखक मेटाडेटा को ठीक करना चाहते हैं
git reset --soft HEAD~1नवीनतम कमिट (HEAD)हाँआप इसके सभी परिवर्तनों को चरणबद्ध रखते हुए HEAD को पूरी तरह से अनकमिट करना चाहते हैं ताकि आप उन्हें दो या दो से अधिक अलग-अलग कमिट में विभाजित कर सकें
git rebase -i <base>सीमा में कोई भी कमिटहाँआपको अपने पीआर को मर्ज करने से पहले संपादित करना होगा, पुनः लिखना होगा, स्क्वैश करना होगा, फिक्सअप करना होगा, पुनः व्यवस्थित करना होगा, या HEAD से अधिक पुरानी कमिट छोड़नी होगी
git revert <sha>कोई भी कमिट (HEAD या इससे अधिक पुरानी)नहीं (एक नई कमिट जोड़ता है)कमिट पहले से ही main या एक साझा शाखा पर है जहां बलपूर्वक पुश करना अवरुद्ध है या टीम के साथियों को बाधित करेगा

GitTree में अंतिम कमिट में संशोधन कैसे करें (चरण दर चरण)

  1. परिवर्तन खोलें और अपने चरणबद्ध अंतर का निरीक्षण करें

    GitTree में macOS, Windows और Linux पर, साइडबार में परिवर्तन खोलें। यदि आप केवल अंतिम कमिट के संदेश को संपादित करना चाहते हैं, तो चरणबद्ध परिवर्तन को खाली छोड़ दें; यदि आप किसी भूली हुई फ़ाइल या विशिष्ट पंक्तियों को मोड़ना चाहते हैं, तो केवल उन फ़ाइलों, टुकड़ों या पंक्तियों को अगल-बगल के अंतर में रखें।

  2. पिछली कमिट में संशोधन चालू करें (1)

    कमिट संदेश बॉक्स के ऊपर पिछली कमिट में संशोधन करें पर स्विच करें (या macOS पर Cmd+Shift+M / Windows और Linux पर Ctrl+Shift+M दबाएं)। जब संदेश बॉक्स खाली होता है तो GitTree सारांश और विवरण को HEAD से पहले ही भर देता है—और यदि HEAD पहले ही आपके रिमोट पर भेज दिया गया है, तो GitTree आपके इतिहास को फिर से लिखने से पहले एक स्पष्ट चेतावनी बैनर प्रदर्शित करता है।

  3. संदेश को परिष्कृत करें (या एआई के साथ ड्राफ्ट करें) और संशोधन कमिट पर क्लिक करें (2)

    विषय या मुख्य भाग को संपादित करें—या Nour और अपने स्वयं के कोडिंग एजेंट CLI (Claude Code, Codex, या Gemini CLI) को पूर्ण संशोधित अंतर से एक अद्यतन कमिट संदेश का मसौदा तैयार करने देने के लिए GitTree प्रो में स्पार्कल बटन पर क्लिक करें—फिर संशोधित कमिट पर क्लिक करें।

  4. एक क्लिक में पूर्ववत करें या फ़ोर्स पुश (लीज़ के साथ) के साथ सुरक्षित रूप से पुश करें

    अपना मन बदल लिया? शीर्ष टूलबार में पूर्ववत करें पर क्लिक करें (Cmd+Z / Ctrl+Z) मूल पूर्व-संशोधन कमिट को GitTree के refs/ogt/trash सुरक्षा स्नैपशॉट से पुनर्स्थापित करने के लिए, या किसी भी समय खोया और पाया में पुराने कमिट का निरीक्षण करें। यदि कमिट पहले से ही आपकी रिमोट फीचर शाखा पर थी, तो टूलबार से फोर्स पुश (लीज के साथ)… का उपयोग करें।

GitTree में कमिट फॉर्म: (1) पिछली कमिट में संशोधन करें स्विच और (2) कमिट में संशोधन बटन।
GitTree में कमिट फॉर्म: (1) पिछली कमिट में संशोधन करें स्विच और (2) कमिट में संशोधन बटन।GitTree प्रदर्शन भंडार के साथ इंटरफ़ेस।
GitTree में पिछले कमिट में संशोधन को चालू करना, कमिट सारांश को अपडेट करना और टिप कमिट को एक क्लिक में बदलना।
GitTree में पिछले कमिट में संशोधन को चालू करना, कमिट सारांश को अपडेट करना और टिप कमिट को एक क्लिक में बदलना।GitTree प्रदर्शन भंडार के साथ इंटरफ़ेस।

कैसे GitTree हर सामान्य git कमिट --संशोधित गलती को दूर करता है

अधिकांश कमांड-लाइन संशोधन दुर्घटनाएँ इसलिए होती हैं क्योंकि टर्मिनल संदर्भ के तीन महत्वपूर्ण टुकड़ों को तब तक छुपाता है जब तक कि बहुत देर नहीं हो जाती: आपके स्टेजिंग क्षेत्र में पहले से ही क्या मौजूद है, क्या HEAD को पहले ही origin पर पुश दिया गया है, और आपके द्वारा इसे ओवरराइट करने से पहले पिछली कमिट SHA क्या थी। GitTree उन विफलता मोडों में से प्रत्येक को सीधे इंटरफ़ेस में हल करता है:

  • लाइव स्टेज्ड बनाम अनस्टेज्ड डिफ इंस्पेक्शन: इससे पहले कि आप कमिट में संशोधन करें पर क्लिक करें, स्टेज्ड चेंजेस सूची सीधे कमिट बॉक्स के ऊपर बैठती है ताकि आप कभी भी गलती से आधी-अधूरी फाइलों को HEAD में मोड़ न सकें। आप एक क्लिक से अलग-अलग लाइनों, हंक्स या फ़ाइलों को स्टेज या अनस्टेज कर सकते हैं (स्टेज फ़ाइलें, हंक्स और लाइन्स)।
  • पुश्ड-कमिट डिटेक्शन और फोर्स-पुश-विथ-लीज प्रोटेक्शन: जब HEAD पहले से ही रिमोट ब्रांच पर है, तो GitTree आपके संशोधन करने से पहले आपको कमिट पैनल के अंदर ही चेतावनी देता है, और वर्कफ़्लो को फोर्स पुश (लीज के साथ)… के साथ जोड़ देता है ताकि आप कभी भी टीम के साथी के पुश को ओवरराइट न करें।
  • राइट-क्लिक रीवर्डिंग और क्विक `fixup!` / `amend!` क्रिएशन: क्या आप अपनी चरणबद्ध फ़ाइलों को छुए बिना HEAD रीवर्ड करना चाहते हैं? कमिट ग्राफ़ में शीर्ष कमिट पर राइट-क्लिक करें और कमिट संदेश संपादित करें... चुनें। किसी पुराने कमिट को ठीक करने की आवश्यकता है? ग्राफ़ में उस पुराने कमिट पर राइट-क्लिक करके fixup! या amend! कमिट बनाएं या इंटरैक्टिव रीबेस खोलें।
  • स्वचालित सुरक्षा स्नैपशॉट (`refs/ogt/trash`) और एक-क्लिक पूर्ववत करें: इतिहास बदलने वाले 19 ऑपरेशनों में से किसी को निष्पादित करने से पहले - जिसमें कमिट में संशोधन, इंटरैक्टिव रीबेस, रीसेट, शाखा हटाना और त्यागना शामिल है - GitTree refs/ogt/trash के तहत एक स्थानीय स्नैपशॉट रिकॉर्ड करता है। पूर्ववत करें (Cmd+Z / Ctrl+Z) पर क्लिक करने से आपकी सटीक पूर्व-संशोधन कमिट और स्टेजिंग स्थिति तुरंत बहाल हो जाती है।
  • विजुअल लॉस्ट एंड फाउंड एंड बिल्ट-इन टर्मिनल: भले ही आपने अंतर्निहित टर्मिनल या सप्ताह पहले से संशोधन किया हो, लॉस्ट एंड फाउंड पहुंच योग्य नहीं है और कमिट को उनके पूर्ण अंतर के साथ बदल दिया गया है, ताकि आप कच्चे git reflog आउटपुट को पार्स किए बिना उनमें से पुनर्स्थापित, चेरी-पिक, या शाखा कर सकें।
  • Git Hooks, Secret Warnings & AI Commit Messages: GitTree runs your repository’s pre-commit and commit-msg Git hooks, checks staged diffs for accidental API keys, and (in GitTree Pro) lets Nour generate accurate commit messages using your own local coding agent.
कमिट बनाने या उसमें संशोधन करने से पहले चरणबद्ध परिवर्तनों का निरीक्षण करना और GitTree में एक स्पष्ट कमिट संदेश का मसौदा तैयार करना।
कमिट बनाने या उसमें संशोधन करने से पहले चरणबद्ध परिवर्तनों का निरीक्षण करना और GitTree में एक स्पष्ट कमिट संदेश का मसौदा तैयार करना।
GitTree ग्राफ़ में किसी कमिट पर राइट-क्लिक करने से एडिट कमिट मैसेज…, इंटरएक्टिव रीबेस, रीसेट, चेरी-पिक और रिवर्ट तक तत्काल पहुंच मिलती है।
GitTree ग्राफ़ में किसी कमिट पर राइट-क्लिक करने से एडिट कमिट मैसेज…, इंटरएक्टिव रीबेस, रीसेट, चेरी-पिक और रिवर्ट तक तत्काल पहुंच मिलती है।
GitTree टूलबार में पूर्ववत करें और फिर से करें बटन एक ही क्लिक में संशोधित कमिट को उलट देते हैं, रीसेट कर देते हैं या रीबेस कर देते हैं।
GitTree टूलबार में पूर्ववत करें और फिर से करें बटन एक ही क्लिक में संशोधित कमिट को उलट देते हैं, रीसेट कर देते हैं या रीबेस कर देते हैं।GitTree प्रदर्शन भंडार के साथ इंटरफ़ेस।
GitTree की खोई हुई और पाई गई दृश्य सूचियाँ लटक रही हैं और उनके पूर्ण अंतर के साथ प्रतिस्थापित कमिट हैं ताकि आप पूर्व-संशोधन स्नैपशॉट को दृश्यमान रूप से पुनर्प्राप्त कर सकें।
GitTree की खोई हुई और पाई गई दृश्य सूचियाँ लटक रही हैं और उनके पूर्ण अंतर के साथ प्रतिस्थापित कमिट हैं ताकि आप पूर्व-संशोधन स्नैपशॉट को दृश्यमान रूप से पुनर्प्राप्त कर सकें।

अक्सर पूछे जाने वाले प्रश्न

क्या git कमिट --अमेंड कमिट SHA हैश को बदल देता है?

हाँ। Git कमिट अपरिवर्तनीय हैं, इसलिए git commit --amend एक नए SHA-1 (या SHA-256) हैश के साथ एक बिल्कुल नया कमिट ऑब्जेक्ट बनाता है जो उसी पैरेंट को साझा करता है जो इसे प्रतिस्थापित करता है, फिर आपके ब्रांच पॉइंटर को नए कमिट में ले जाता है। जब तक Git कचरा संग्रह पहुंच योग्य वस्तुओं की समय सीमा समाप्त नहीं हो जाती, तब तक प्रतिस्थापित कमिट आपके स्थानीय git reflog (HEAD@{1}) में बनी रहती है।

मैं अंतिम कमिट के कमिट संदेश को बदले बिना उसमें कैसे संशोधन कर सकता हूँ?

अपने अतिरिक्त परिवर्तनों को git add <file> (या git add -p) के साथ चरणबद्ध करें, फिर git commit --amend --no-edit चलाएँ। --no-edit ध्वज Git को आपके टेक्स्ट एडिटर को खोले बिना HEAD से मौजूदा कमिट संदेश का पुन: उपयोग करने के लिए कहता है। GitTree में, पिछली कमिट में संशोधन चालू करने से पिछली कमिट का सारांश और विवरण स्वचालित रूप से भर जाता है ताकि आप कमिट में संशोधन पर तुरंत क्लिक कर सकें।

जब मेरे पास पहले से ही अन्य फ़ाइलें चरणबद्ध हैं तो मैं केवल अंतिम कमिट संदेश कैसे बदलूं?

git commit --amend --only -m "New commit message" (या git commit --amend -o) चलाएँ। --only फ़्लैग Git को निर्देश देता है कि वह केवल HEAD में पहले से रिकॉर्ड की गई फ़ाइल ट्री का उपयोग करके HEAD में संशोधन करे, जिससे आपकी वर्तमान चरणबद्ध फ़ाइलें आपके अगले कमिट के लिए इंडेक्स में अछूती रह जाएँ। GitTree में, आप ग्राफ़ में शीर्ष कमिट पर राइट-क्लिक भी कर सकते हैं और कमिट संदेश संपादित करें... चुन सकते हैं।

क्या मैं किसी कमिट को पहले ही GitHub, GitLab, या बिटबकेट पर पुश करने के बाद उसमें संशोधन कर सकता हूँ?

हां, यदि यह आपकी स्वयं की फीचर शाखा है: स्थानीय रूप से कमिट में संशोधन करें और फिर git push --force-with-lease --force-if-includes चलाएं (या फोर्स पुश (लीज के साथ)… का उपयोग GitTree में करें) इसलिए Git रिमोट शाखा को केवल तभी अपडेट करता है जब किसी और ने नई कमिटों को आगे नहीं बढ़ाया हो। किसी पुश किए गए कमिट में संशोधन करने के बाद git pull न चलाएं, और साझा शाखाओं जैसे main पर कमिट में संशोधन करने से बचें—इसके बजाय वहां git revert का उपयोग करें।

मैं किसी फ़ाइल को अपने कंप्यूटर से हटाए बिना अंतिम कमिट से कैसे हटाऊं?

यदि फ़ाइल अंतिम कमिट में नई जोड़ी गई थी, तो git rm --cached <file> और उसके बाद git commit --amend --no-edit चलाएँ। यदि फ़ाइल पहले से ही HEAD~1 में मौजूद है और आप केवल HEAD में किए गए संपादनों को हटाना चाहते हैं, तो पहले git restore --source=HEAD~1 --staged <file> चलाएं और फिर git commit --amend --no-edit चलाएं। दोनों कमांड आपकी स्थानीय फ़ाइल को कार्यशील ट्री में बरकरार रखते हैं।

अगर मैंने कोई गलती की है तो मैं git कमिट-संशोधन को कैसे पूर्ववत कर सकता हूं?

टर्मिनल में git reset --soft HEAD@{1} चलाएँ. यह आपके ब्रांच पॉइंटर को ठीक उसी कमिट HEAD पर वापस ले जाता है, जो किसी भी नए जोड़े गए परिवर्तन को चरणबद्ध रखते हुए संशोधन से ठीक पहले इंगित किया गया था। GitTree में, बस टूलबार में पूर्ववत करें पर क्लिक करें (Cmd+Z पर macOS या Ctrl+Z पर Windows और Linux) या खोलें खोया और पाया पूर्व-संशोधन कमिट को पुनर्स्थापित करने के लिए।

क्या गिट कमिट --अमेंड pre-commit और commit-msg हुक चलाता है या जीपीजी/एसएसएच हस्ताक्षर रखता है?

Yes—git commit --amend triggers both pre-commit and commit-msg hooks just like a normal commit (pass --no-verify / -n to bypass them when needed). Because amending creates a new commit object, any GPG or SSH signature on the original commit is replaced; if you have commit.gpgsign enabled in Git or in GitTree Preferences › Commit Signing, Git automatically re-signs the amended commit.

मैं उस कमिट में कैसे संशोधन कर सकता हूँ जो इतिहास में दो या तीन कमिटों वाली है?

git commit --amend केवल HEAD संपादित करता है। CLI से किसी पुराने कमिट में संशोधन करने के लिए, अपना सुधार चरणबद्ध करें, git commit --fixup=<sha> (या --fixup=amend:<sha>) चलाएँ, और git rebase -i --autosquash <sha>~1 चलाएँ। GitTree में, कमिट ग्राफ़ में पुराने कमिट पर राइट-क्लिक करें और इसे फिर से लिखने, संपादित करने या दृश्य रूप से स्क्वैश करने के लिए यहां से इंटरएक्टिव रीबेस... चुनें।

सूत्र

अन्य उत्पादों के बारे में दावों की जाँच उनके आधिकारिक पेजों के विरुद्ध 11 नवंबर 2026 पर की गई। कीमतें और सुविधाएँ बदलती हैं; विक्रेताओं के पृष्ठ सत्य का स्रोत हैं।