تک ویت امید

اضافه کردن تغییرات بیشتر در git به کامیت قبلی

· امید ·

امروز داشتم کار میکردم که تغییرات رو توی git کامیت کردم و دوباره یکسری تغییرات ایجاد کردم که خواستم روی کامیت قبلی بره و نمیخواستم یه کامیت دیگه بزنم برای همین یه سرچ زدم و برام جالب بود که git این قابلیت رو هم داره. همینطور که لینوس توروالدز توسعه دهنده git میگه حتی خودمم کامل git رو بلد نیستم.

برای اینکار لازم نیست که کار خیلی پیچیده‌ای انجام بدید. فقط کافیه که تغییراتی که لازم دارید رو انجام بدید و وقتی که میخواید کامیت کنید، از یکی دو فلگ اضافه‌تر استفاده می‌کنید که این پایین براتون توضیح میدم که چی به چیه.

سناریو رو اینجوری در نظر میگیریم که داریم رو پروژه کار می‌کنیم و کامیت هامون به شکل زیره(کامیت های قدیمی‌تر بالاتر قرار دارن):

f7f3f6d create file_a class and methods
310154e improve SomeOtherClass code
a5f4a0d update changelog file

ولی ما یادمون رفته که یه خطی رو به کامیت آخر، یعنی این کامیت a5f4a0d انجام اضافه کنیم. راه حل اولی که به ذهن خودم رسید این بود که تغییراتی که لازم بود انجام بدم و یادم رفته بود رو اضافه کنم و یه کامیت جدید بزنم که کار جالبی نبود. و کامیت هامون به شکل زیر در میومد:

f7f3f6d create file_a class and methods
310154e improve SomeOtherClass code
a5f4a0d update changelog file
a4gx124 add missing line to changelog

تغییرات دوتا کامیت آخر در واقع یکیه و ممکنه در طولانی مدت یادتون بده و بگید اینجا چیکار کردم بجای این میتونید از دستور amend توی git استفاده کنید.

مقدمات دستور git amend

اول از همه فایلی که میخوایم تغییر بدیم رو به git اضافه می‌کنیم:

git add changelog.md

و بعد از اون amendش می‌کنیم:

git commit --amend

بعد از اینکه این دستور رو اجرا کردید فایلی شبیه به فایل زیر براتون توی ویم یا ادیتور که خودتون انتخاب کردید باز میشه:

update changelog file
# Please enter the commit message for your changes. Lines starting
# with ‘#’ will be ignored, and an empty message aborts the commit.
#
# Author: John Doe <[email protected]>
# Date: Thu Apr 21 22:40:30 2016 -0300
#
# On branch some_branch
# Your branch is up-to-date with ‘origin/some_branch’.
#
# Changes to be committed:
# modified: changelog.md

اینجا میتونید یسری تغییرات بدید و message کامیت خودتون رو تغییر بدید و اگه نخواستید فایل رو سیو کنید و خارج بشید.

ولی اگه نمیخواید message کامیت رو عوض کنید دیگه لازم نیست فایل رو باز کنید و ذخیره کنید و خارج بشید، کافیه فقط دستور زیر رو کپی کنید:

git commit --amend --no-edit

و تمام.

پوش کردن کامیت amend

اگه کامیت قبلی رو پوش نکرده باشید خیلی سادست لازم نیست کار اضافه‌ای رو انجام بدید فقط پوش کنید. اما اگه کامیت قبلی رو پوش کردید، یعنی این کامیت a5f4a0d و از اونجایی که کامیت رو تغییر دادید باید از فلگ -f استفاده کنید.

git push -f origin main

تغییر دادن message کامیت

کار ساده‌ای کافیه از روش زیر استفاده کنید.

git commit --amend -m "Your new commit message"

اگه می‌خواید بیشتر درمورد git amend بخونید میتونید سری به داکیومنت خود گیت در این مورد بزنید.