یه چالش دیگه هم که اخیرا درموردش سرچ کردم و توی کار بهش برخوردیم این بود که بریم commit message های چند کامیت قبلی رو تغییر بدیم، کامیت آخر که راحت ترین راه براش کامند معروف زیر هست:
git command --ammendولی برای مثلا تغییر دادن پیام کامیت دهم بهترین روش این هست:
Interactive Git Rebasing
با استفاده از کامند:
git rebase -i Head~NN تعداد کامیت هست
که از آخرین کامیت تا جایی که میخواین برین عقب میشه.
وقتی که یه interactive rebase انجام میدیم پشت صحنه گیت یه فایل تو دو لیست داخل ادیتور باز میکنه و کامیتها رو از از قدیمی ترین به جدیدترین ( بالا به پایین) نمایش میده و میتونیم انتخاب کنیم که مرحله بعدی برای کامیت چه کاری میخوایم انجام بدیم:
Pick: استفاده از کامیت به همون شکل فعلی
Reword: استفاده از کامیت ولی با ویرایش پیام
Edit: استفاده از کامیت اما با یه وقفه برای تغییر محتوا یا پیام
Squash: مرج کردن این کامیت با کامیت قبلی و با ترکیب کردن پیام اون ها
Fixup: مرج کامیت فعلی با کامیت قبلی بدون نگه داشتن پیام
Drop: حذف کامل کامیت
حالا که فهمیدیم چه آپشنهایی داریم برگردیم سر سناریوی خودمون، وقتی که ادیتور باز شد اون کامیتی که میخوایم رو پیدا میکنیم و دستور کنارش رو از pick به reword تغییر میدیم بعد فایل رو میبندیم وقتی فایل بسته میشه گیت برای اون کامیتی که reword داره یه ادیتور باز میکنه تا پیام رو ادیت کنیم.
و بعد هم rebase انجام میشه.
نکات قابل ملاحظه در کار تیمی:
قطعا این کار هیستوری رو عوض میکنه و اگه این ربپوی مشترک باشه باید از دستور
git push --forceاستفاده کنید که خب بقیه تیم هم باید rebase کنن یا کانفلیکت های احتمالی رو حل کنن که به نظرم به دردسرش نمیارزه.
و اینکه گیت یه قابلیت داره که میشه نوت اضافه کرد و ضمیمه کامیت کرد اگه خیلی توضیح ضروریای باشه که جا افتاده.
git notes add -m "message" <commit hash>و در نهایت اگه ریپوی لوکال باشه بهتره که این راه رو بریم.
#git