گیت یک ابزار کنترل کد است؛ هنگامی که شما تغییری در فایل‌ها ایجاد می‌کنید، این تغییر را ثبت یا Commit می‌کنید؛ هنگام کار با Git، ممکن است با شرایطی روبرو شوید که در آن نیاز به ویرایش یک پیام commit داشته باشید. دلایل زیادی وجود دارد که شما بخواهید این تغییر را انجام دهید، مانند اصلاح یک اشتباه تایپی، حذف اطلاعات حساس یا افزودن اطلاعات اضافی؛ در اینجا چگونگی تغییر Git commitهای اخیر یا قدیمی توضیح داده می‌شود.

 

تغییر آخرین commit

دستور  git commit --amend  به شما امکان می‌دهد، جدیدترین پیام commit را تغییر دهید.

 

commit بارگذاری نشده

برای تغییر پیام جدیدترین commit که به مخزن ریموت منتقل نشده است، مجدداً آن را با استفاده از پرچم –amend، commit کنید.
1. در ترمینال خود به دایرکتوری مخزن بروید.
2. برای اصلاح (تغییر) پیام آخرین commit، دستور زیر را اجرا کنید:

git commit --amend -m "New commit message."

در اینصورت آخرین commit با یک پیام commit جدید بازنویسی می‌شود.
گزینه -m به شما امکان می‌دهد پیام جدید را بدون باز کردن ویرایشگر (مثل nano)، در خط فرمان بنویسید.
قبل از تغییر پیام commit، می‌توانید تغییرات دیگری را نیز که قبلاً فراموش کرده اید اضافه نمایید:

git add .
git commit --amend -m "New commit message."

 

commit بارگذاری شده

commit اصلاح شده (تغییر یافته) یک موجودیت جدید با SHA-1 متفاوت است. commit قبلی دیگر در شاخه فعلی وجود نخواهد داشت.
به طور کلی، شما باید از اصلاح commit قبلاً بارگذاری شده خودداری کنید؛ زیرا این امر ممکن است باعث ایجاد مشکلاتی برای افرادی شود که کارشان بر اساس این commit پایه گذاری شده است. این ایده خوبی است که قبل از تغییر یک commit بارگذاری شده، با دیگر توسعه دهندگان پروژه مشورت کنید.
اگر پیام commit اخیراً بارگذاری شده را تغییر داده اید، باید مجددا آن را بارگذاری نمایید. برای این کار مراحل زیر را انجام دهید:
1. به مخزن بروید.
2. پیام آخرین commit بارگذاری شده را با استفاده از دستور زیر اصلاح کنید:

git commit --amend -m "New commit message."

پیام commit جدید را برای به روزرسانی تاریخچه مخزن ریموت بارگذاری نمایید.

git push --force branch-name

 

تغییر یک commit قدیمی‌تر یا commitهای چندگانه

اگر شما نیاز به تغییر پیام مربوط به یک  commit یا چندین commit قدیمی‌تر دارید، می‌توانید از یک  git rebase  تعاملی برای تغییر یک یا چند commit قدیمی ‌استفاده کنید.
دستور rebase، تاریخچه commit را بازنویسی می‌کند، و از جابه‌جایی commit قبلاً بارگذاری شده در مخزن Git ریموت به به شاخه دیگر به شدت خودداری می‌نماید.
1. به مخزن حاوی پیام commit که می‌خواهید تغییر دهید بروید.
2. عبارت  git rebase -i HEAD~N  را تایپ کنید، که در آن N تعداد commitهایی است که بصورت یکجا تاریخچه آن‌ها بازنویسی می‌شود. به عنوان مثال، اگر می‌خواهید چهارمین و پنجمین مورد آخر commit  را تغییر دهید، از دستور زیر استفاده نمایید:

git rebase -i HEAD~5

این دستور xمین مورد آخر commit را در ویرایشگر متن پیش فرض شما نمایش می‌دهد:

pick 43f8707f9 fix: update dependency json5 to ^2.1.1
pick cea1fb88a fix: update dependency verdaccio to ^4.3.3
pick aa540c364 fix: update dependency webpack-dev-server to ^3.8.2
pick c5e078656 chore: update dependency flow-bin to ^0.109.0
pick 11ce0ab34 fix: Fix spelling.

# Rebase 7e59e8ead..11ce0ab34 onto 7e59e8ead (5 commands)

3. به خطوط پیام commit مورد نظر رفته و pick را با کلمه reword جایگزین کنید:

reword 43f8707f9 fix: update dependency json5 to ^2.1.1
reword cea1fb88a fix: update dependency verdaccio to ^4.3.3
pick aa540c364 fix: update dependency webpack-dev-server to ^3.8.2
pick c5e078656 chore: update dependency flow-bin to ^0.109.0
pick 11ce0ab34 fix: Fix spelling.

# Rebase 7e59e8ead..11ce0ab34 onto 7e59e8ead (5 commands)

4. تغییرات را ذخیره کرده و ویرایشگر را ببندید.
5. برای هر commit انتخاب شده، یک پنجره ویرایشگر متن جدید باز خواهد شد. پیام commit را تغییر دهید، پرونده را ذخیره کنید و ویرایشگر را ببندید.

fix: update dependency json5 to ^2.1.1

تغییرات را به مخزن ریموت اعمال نمایید:

git push --force branch-name

 

منبع:

How to Change a Git Commit Message