یک جریان کاری ساده با گیت برای تیم‌های دو سه نفره

· ۶ دقیقه مطالعه

گیت

Git Flow با شاخه‌های develop و release و hotfix برای تیمی طراحی شده که نسخه‌های شماره‌دار منتشر می‌کند. تیم دو سه نفره‌ای که هر روز روی سرور می‌گذارد به چیز ساده‌تری نیاز دارد.

قاعده‌ها

  1. شاخه‌ی main همیشه قابل استقرار است.
  2. هر کار یک شاخه دارد که از main جدا می‌شود و عمرش به چند روز نمی‌رسد.
  3. قبل از ادغام، شاخه روی آخرین main بازپایه می‌شود.
  4. هیچ‌کس مستقیم روی main کامیت نمی‌کند.

در عمل

git switch main
git pull --ff-only
git switch -c feat/order-export

# ... کار و کامیت ...

git fetch origin
git rebase origin/main
git push -u origin feat/order-export

pull --ff-only اگر تاریخچه‌ی محلی و راه دور از هم جدا شده باشند شکست می‌خورد، به جای این‌که بی‌صدا یک کامیت ادغام بسازد. این شکست خبر خوبی است: یعنی چیزی روی main محلی دارید که نباید آن‌جا باشد.

پیام کامیت

خط اول کوتاه و امری، و اگر لازم بود بعد از یک خط خالی توضیح بدهید که چرا، نه چه. چه را خود تغییرات نشان می‌دهد.

fix: round order total before comparing with gateway amount

The gateway returns an integer and we compared it against a float,
so some orders were rejected as mismatched by a fraction.

مرتب کردن کامیت‌ها قبل از ادغام

کامیت‌هایی مثل «اصلاح غلط تایپی» و «دوباره اصلاح» به درد تاریخچه نمی‌خورند. قبل از فرستادن، آن‌ها را در کامیت اصلی‌شان ادغام کنید:

git commit --fixup <hash>
git rebase --autosquash origin/main

اگر شاخه را قبلاً فرستاده‌اید، بعد از بازپایه باید با git push --force-with-lease بفرستید. فرقش با --force این است که اگر کس دیگری در این فاصله روی همان شاخه چیزی فرستاده باشد، رد می‌شود و کار او را پاک نمی‌کند.

وقتی خراب شد

git reflog هر جایی را که HEAD در آن بوده نگه می‌دارد، حتی بعد از بازپایه‌ای که بد پیش رفته:

git reflog
git reset --hard HEAD@{3}