یک جریان کاری ساده با گیت برای تیمهای دو سه نفره
Git Flow با شاخههای develop و release و hotfix برای تیمی طراحی شده که نسخههای شمارهدار منتشر میکند. تیم دو سه نفرهای که هر روز روی سرور میگذارد به چیز سادهتری نیاز دارد.
قاعدهها
- شاخهی
mainهمیشه قابل استقرار است. - هر کار یک شاخه دارد که از
mainجدا میشود و عمرش به چند روز نمیرسد. - قبل از ادغام، شاخه روی آخرین
mainبازپایه میشود. - هیچکس مستقیم روی
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}