לדלג לתוכן

Branching בגיט מוסבר בפשטות

בהתחלה, כשעוד לא הבנתי branches, פשוט כתבתי הכל ישירות על main. עבד לי טוב, חשבתי - עד שיום אחד התחלתי לבנות פיצ'ר גדול, באמצע הדרך שברתי חצי מהפרויקט, וכל מי שמשך את הקוד שלי קיבל גרסה חצי גמורה שלא עובדת. זו בדיוק הבעיה ש-branching פותר.

אז מה זה בעצם branch

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

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

למה בכלל לא לעבוד ישר על main

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

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

איך יוצרים ועובדים עם branch

git branch feature-login          # יוצר branch חדש בשם הזה
git checkout feature-login        # עובר אליו

או בפקודה אחת שעושה את שניהם:

git checkout -b feature-login

בגרסאות עדכניות של git יש גם פקודה חדשה יותר שעושה בדיוק את אותו דבר:

git switch -c feature-login

מהרגע הזה, כל commit שתעשו נשמר על ה-branch הזה בלבד. אתם יכולים לעבור בין branches בכל רגע עם git checkout או git switch, וגיט יחליף את תוכן הקבצים בהתאם, בלי לאבד שום דבר.

איך חוזרים למיין ומשלבים בחזרה

כשהעבודה על ה-branch מוכנה, חוזרים לענף הראשי ומשלבים אליו:

git checkout main
git merge feature-login

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

מוסכמות שמות שכדאי להכיר

אין חוק מחייב, אבל רוב הצוותים משתמשים במוסכמה עקבית כדי שיהיה ברור על מה כל branch עוסק:

  • feature/login-form - פיצ'ר חדש
  • fix/broken-navbar - תיקון באג
  • refactor/user-service - שיפור קוד קיים בלי לשנות התנהגות

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

מה זה gitflow, ומתי בכלל צריך לדעת עליו

אם תחפשו על branching, בטוח תיתקלו במונח gitflow - שיטת עבודה מסודרת עם branches קבועים לפיתוח, לגרסאות יציבות, ולתיקוני חירום. זה שימושי בפרויקטים גדולים עם תהליכי שחרור מורכבים, אבל אתם ממש לא צריכים אותו כדי להתחיל. עבור מתחילים ורוב הפרויקטים הקטנים, מספיק לגמרי לעבוד עם main יציב, ו-branch נפרד לכל פיצ'ר או תיקון. תמיד אפשר להעמיק לשיטות מורכבות יותר כשבאמת יש בהן צורך.

מי שרוצה לתרגל branching על פרויקט אמיתי, לא רק על תרגילים תיאורטיים, זה בדיוק המקום להתחיל.

התחילו את קורס התכנות הבסיסי כאן

לסיכום

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

לא בטוחים אילו branches יש לכם או איך לנקות ענפים ישנים? בדיסקורד שלנו תמיד יש מישהו שישמח לעזור לפענח את זה.

הצטרפו לקהילה בדיסקורד