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

מסכת גיט

כללי ה-Commit

6 הלכות

א

אסור לדחוף ישירות ל-main. המבצע זאת — הרי הוא כמי שנכנס לקודש הקודשים בלא רשות, ודינו להיבדק ב-code review כבכל אדם.

main היא ענף הייצור — קדושה היא. ואפילו תיקון שגיאת כתיב, אפילו שינוי שורה אחת — יעבור דרך branch ו-PR כדת וכדין.

ב

כל commit חייב לייצג שינוי אחד לוגי ולא יותר. המאחד "תיקון באג, הוספת פיצ׳ר ושינוי עיצוב" ב-commit אחד — כאילו ערבב כלאיים.

שכן לא יוכל איש לעשות revert לחלק מן ה-commit, ולא יוכל להבין מה שינה ומדוע. ואמרו חכמים: commit קטן וברור עדיף על גדול ומבולבל.

ג

הודעת ה-commit חייבת לתאר מה השתנה ולמה — לא איך. "fix bug" ו-"update stuff" — פסולות הן ומביאות בושה.

ויהי עוד שישה חודשים ויחפש המפתח בהיסטוריה מדוע נשתנה הדבר — ויקרא "fix stuff" ויאנח. הוי אומר: כתוב לעצמך של עתיד.

ד

קבצי .env, סיסמאות, ומפתחות API — אסורים בהחלט ב-git, אפילו ב-private repo. המדחף אותם — חייב להחליף את המפתחות לאלתר, ואין לו כפרה אחרת.

שכן git זוכר הכל, אפילו אחרי git rm. ומעשה היה בחברה שדחפה מפתח AWS ל-GitHub — ותוך דקות נוצרו מאה שרתים במדינות שאינן שלה, ויהי החשבון גדול מאוד.

ה

אסור לעשות commit לקוד שבור. הענף חייב לבנות ולעבור בדיקות בכל עת — שמא יבוא אחר ויסתמך עליו.

הדוחף קוד שאינו עובד ל-branch משותף — כאילו השאיר מלכודת לחבריו. ודרשו חכמים: WIP ב-commit message אינו היתר, אלא אזהרה.

ו

עדיף commits קטנים ותכופים על commit אחד גדול בסוף היום. המצבר עבודה של שלושה ימים ל-commit אחד — קשה לביקורת, קשה ל-revert, וקשה לאהוב.

אמרו חכמים: commit שאי אפשר לקרוא את ה-diff שלו במבט אחד — גדול מדי הוא. פצל ועשה שניים, ואם אפשר — שלושה.