טעויות נפוצות של מתחילים בגיט¶
ליוויתי מספיק מתחילים כדי לדעת שכמעט כולם עושים את אותן טעויות בגיט, בערך באותו סדר. הרשימה הזו היא לא ביקורת, היא בעצם קיצור דרך - אם תדעו מראש מה לצפות, תוכלו לחסוך לעצמכם את הכאב שאני והרבה אחרים כבר עברנו.
דוחפים סיסמאות ומפתחות API לרפו¶
זו הטעות הכי מסוכנת ברשימה, ולצערי גם אחת הנפוצות ביותר. מתחיל כותב קוד שמתחבר למסד נתונים או לשירות חיצוני, שם את הסיסמה או המפתח ישירות בקוד כדי "שיעבוד מהר", ועושה commit. אם ה-repo ציבורי, המפתח חשוף לעולם כולו תוך שניות, ובוטים סורקים GitHub כל הזמן בדיוק בחיפוש אחרי דברים כאלה.
הפתרון - אף פעם לא שמים סיסמאות או מפתחות ישירות בקוד. משתמשים בקובץ .env שנמצא ב-.gitignore ולא נכנס לגיט בכלל, וטוענים ממנו את הערכים הרגישים בזמן ריצה.
שוכחים .gitignore ומעלים קבצים שלא צריך¶
תיקיית venv, קבצי __pycache__, קובץ .env, ולפעמים אפילו קבצים ענקיים שנוצרו אוטומטית - כל אלה מוצאים את דרכם ל-repo של מתחילים שלא הגדירו קובץ .gitignore מההתחלה. חוץ מזה שזה מבלגן את ההיסטוריה, זה גם מגדיל את ה-repo לגודל לא סביר ומקשה על כולם לעבוד איתו.
הפתרון פשוט - יוצרים קובץ .gitignore כבר ב-commit הראשון של הפרויקט, עוד לפני שיש בכלל קבצים לא רצויים בסביבה.
commits ענקיים עם עשרות שינויים לא קשורים¶
מתחיל שעובד שעתיים על תכונה, ורק בסוף עושה commit אחד שמכיל את כל השינויים ביחד - כולל תיקון באג לא קשור בדרך, ושינוי עיצוב קטן שנתקל בו במקרה. הבעיה היא שאם משהו מהשינויים האלה מתגלה כשגוי, אי אפשר לבטל רק אותו בלי לבטל גם את כל השאר.
הפתרון - commits קטנים ותכופים, כל אחד עם מטרה ברורה אחת. commit על כל תכונה שלמה קטנה, לא על כל השינויים של היום.
הודעות commit חסרות משמעות¶
"fix", "update", "asdasd", "שינויים אחרונים". הודעות כאלה לא אומרות כלום, וכשתחזרו להיסטוריה בעוד חודש כדי להבין למה שיניתם משהו, לא יהיה לכם שום מידע לעבוד איתו. השקיעו את חמש השניות הנוספות לכתוב מה השתנה ולמה.
לא עושים pull לפני שמתחילים לעבוד¶
מתחיל שפותח את המחשב, מתחיל לכתוב קוד ישר על גרסה ישנה, ורק אחרי שעה מגלה שמישהו אחר כבר דחף שינויים לאותם קבצים. התוצאה היא קונפליקטים מיותרים שאפשר היה למנוע בקלות. הרגל טוב - git pull הוא הדבר הראשון שעושים כל בוקר עבודה, לפני שכותבים שורת קוד אחת.
force push על branch משותף¶
git push --force הוא כלי חזק שדורס את ההיסטוריה בשרת המרוחק בלי שאלות. על branch פרטי משלכם, זה בסדר. על main או כל branch שאנשים אחרים עובדים עליו, זה יכול למחוק עבודה של אנשים אחרים לגמרי, ולפעמים בלתי הפיך. אם אתם לא בטוחים במאה אחוז מה force push עושה, פשוט אל תריצו אותו על branch משותף.
מוחקים את תיקיית .git מרוב פאניקה¶
זה קורה יותר ממה שתחשבו - משהו משתבש, git מתחיל לזרוק שגיאות מבלבלות, ומתוך תסכול המתחיל מוחק את תיקיית .git כדי "להתחיל מחדש". הבעיה - זה מוחק את כל ההיסטוריה, כולל בדיוק ה-commits שיכלו להציל אתכם. כמעט תמיד יש דרך לצאת ממצב בעייתי בגיט בלי לאבד היסטוריה, פשוט צריך לעצור, לנשום, ולחפש מה קרה במקום למחוק בבהלה.
הטעות הכי גדולה מכולן - לדחות ללמוד את זה¶
הטעות שמייצרת את כל שאר הטעויות היא לא ללמוד את הבסיס לפני שמתחילים לעבוד עם פרויקטים אמיתיים. חצי שעה של הבנה נכונה של מושגים כמו commit, branch ו-remote חוסכת שבועות של טעויות בדיעבד.
התחילו את קורס התכנות הבסיסי כאן
לסיכום¶
כל מתכנת ותיק עשה בעבר את כל הטעויות ברשימה הזו, בלי יוצא מן הכלל. הדרך להיפטר מהן היא לא לפחד מגיט, אלא להבין למה כל כלל קיים, ולתרגל עד שהוא הופך לרפלקס.
עשיתם אחת מהטעויות האלה ולא בטוחים איך לתקן את הנזק? זה בדיוק המקום לשאול לפני שאתם מנסים משהו שעלול להחמיר את המצב.