אסור לדחוף ישירות ל-main. המבצע זאת — הרי הוא כמי שנכנס לקודש הקודשים בלא רשות, ודינו להיבדק ב-code review כבכל אדם.
main היא ענף הייצור — קדושה היא. ואפילו תיקון שגיאת כתיב, אפילו שינוי שורה אחת — יעבור דרך branch ו-PR כדת וכדין.
מסכת גיט
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 שלו במבט אחד — גדול מדי הוא. פצל ועשה שניים, ואם אפשר — שלושה.