התלמוד של המפתחהתלמוד של המפתח

מסכת גיט

ניהול Branches

5 הלכות

א

שם ה-branch חייב לתאר את מטרתו. my-branch, test123, nissan-2 — פסולים הם. הכותב שם שאינו מובן לזר — כאילו כתב בלשון סתרים.

הנוסח הכשר: feature/user-auth, fix/login-crash, chore/update-deps. שכן ביום שתחפש בהיסטוריה — השם הוא כל מה שיש לך.

ב

ה-branch חייב לחיות זמן קצר. branch שאינו ממוזג תוך ימים ספורים — בחזקת בעיה הוא, וחובה לשאול מדוע.

branch ארוך צובר קונפליקטים כדרך שמים צוברים עננים. וכשם שעננים רבים מביאים סערה — כך branch ארוך מביא merge מייסר ולילה ארוך.

ג

לפני כל merge חובה לעדכן את ה-branch מ-main. הממזג ללא עדכון — מסתכן בקונפליקטים שיכול היה למנוע.

אמרו חכמים: git rebase main או git merge main — שניהם כשרים, ובלבד שייעשו. ומחלוקת rebase ו-merge — לא נכריע כאן, אך לעשות אחד מהם — חובה גמורה.

מחלוקת
רבי ריבייס הגדול אומר:

Rebase הוא העיקר. הוא שומר על היסטוריה נקייה ולינארית, וכל commit מובן לבדו. git log קריא הוא מתנה לדורות.

רבי מרג' הנאמן חולק ואומר:

Merge הוא העיקר. הוא שומר על אמת ההיסטוריה. Rebase משנה SHA ומשכתב עבר — ובכך שקר בפיו. ההיסטוריה צריכה להיות אמיתית, לא ערוכה.

רבי ריבייס הגדול:

ומה תועיל היסטוריה אמיתית שאי אפשר לקרוא?

רבי מרג' הנאמן:

ומה תועיל היסטוריה נקייה שמסתירה מה שבאמת קרה?

רבי ריבייס הגדול:

squash + rebase — נקי ואמיתי.

רבי מרג' הנאמן:

squash מוחק עבודה. אני מסרב.

תֵּיקוּ

ד

branch שמוזג — חובה למחקו. branch מת שנשאר אחרי merge מטמא את ה-repo ומבלבל את הבאים אחריך.

ויפתח המפתח את רשימת ה-branches ויראה ארבעים ושלושה branches — ורובם מוזגים זה מכבר. ויאמר: מה זה? ומי עשה זאת? ולא ידע איש.

ה

אסור לעבוד ישירות על branch משותף כגון develop או staging. כל עבודה — ב-branch פרטי, וממנו ל-PR.

שכן branch משותף הוא רכוש הציבור, ומי שדוחף אליו ישירות — פוגע בכולם. ומעשה היה ושניים עבדו על אותו branch — ויהי הקונפליקט, ויהיו הקללות, ותקלקל הידידות.