وقتی روی یک شاخه کار می‌کنید و شاخهٔ اصلی جلو رفته، دو راه برای هماهنگی دارید.

merge

یک کامیت ادغام می‌سازد و تاریخچهٔ واقعی را با همهٔ شاخه‌ها نگه می‌دارد. امن است و تاریخچه را بازنویسی نمی‌کند.

git switch feature
git merge main

rebase

کامیت‌های شاخه را روی نوک شاخهٔ اصلی «دوباره می‌چیند» و تاریخچه‌ای خطی می‌سازد؛ اما شناسهٔ کامیت‌ها تغییر می‌کند.

git switch feature
git rebase main

قاعدهٔ طلایی

  • روی شاخه‌ای که دیگران از آن استفاده می‌کنند rebase نکنید.
  • برای شاخهٔ شخصی، rebase قبل از PR تاریخچه را تمیز می‌کند.
  • در صورت اشتباه، git reflog کمک می‌کند حالت قبلی را برگردانید.