אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » Git » Git – עבודה עם ענפים (branches)

Git – עבודה עם ענפים (branches)

רן בר-זיק דצמבר 27, 2015 7:39 am 5 תגובות

יצירת ענף מקומי, דחיפה שלו לשרת וקבלת עדכונים.

המאמר הקודם במדריך ה-gitGit – עבודה מול שרת חיצוני של גיטהאב
המאמר הבא במדריך ה-gitGit – יצירת pull request
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אפשר ללמוד גיט יותר טוב

ספר מקיף על גיט, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - כולל הסבר על תרומה לפרויקטים של קוד פתוח ושילוב של התרומה בקורות החיים ניתן להורדה ממש פה.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

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

ענפים משמשים אותנו לגרסאות שונות או תוספות שונות למוצר שלנו. למשל, אם יש לי repo של תוסף לוורדפרס ולקוח מעוניין בתוספת פונקציונלית, אני אפצל את הענף הראשי של המוצר (נקרא בדרך כלל master) לענף שעוסק בפיצ'ר, אני אעשה קומיטים מקומיים ואז אדחוף את הענף לשרת המרוחק. שם ה-QA והאוטומציה יוכלו לעבוד עליו. אם הכל תקין הענף ימוזג חזרה אל הענף הראשי (מעכשיו אני קורא לענף הראשי master). אפשר להתפרע יותר – יש במוצר שלנו כמה ענפים – ענף ה-master שהוא הענף הראשי והיציב. בתחילת תהליך הפיתוח אנחנו מפצלים את ענף ה-master לענף ה-development. ממנו אנחנו מצלים עוד ועוד ענפים שכל אחד מהם מוקדש לפיצ'ר אחר. ברגע שהמפתח מסיים לעבוד על הפיצ'ר, הוא דוחף את הענף שלו לשרת ה-git. שם ה-QA בודק אותו יחד עם האוטומציה. אם הכל תקין, הוא ימוזג ל-development. שאר המפתחים, שעובדים על ענפים משלהם יכולים להתעדכן בכל עת מענף ה-development. בסוף התהליך ה-development ממוזג עם ה-master וחוזר חלילה. ואם זה נשמע מבלבל, אל דאגה. זה יהיה פשוט עוד מעט.

אז בואו ונדבר על ענפים. על מנת ליצור ענף מקומי בשם develop כל מה שאני צריך לעשות זה לכתוב

git checkout -b develop

ה- b- הוא קריטי פה. כי הוא מייצר את הענף. מייד אקבל הודעה ש:

Switched to a new branch 'develop'

אם אכתוב git status אראה ש:

$ git status
On branch develop
nothing to commit, working directory clean

כל שינוי שאעשה עכשיו, כולל הקומיטים, יעשה בענף develop. על מנת לדחוף את הענף שלי אל השרת המרוחק, כל מה שאני צריך לעשות זה להשתמש בפקודת git push, שאליה אצרף שני ארגומנטים: הראשון הוא origin שהוא בעצם שם השרת המרוחק שהגדרתי (זוכרים? אם לא, דלגו אחורה שני מאמרים) והשני הוא שם הענף שאני רוצה לדחוף אליו בשרת המרוחק. git push origin develop

$ git push origin develop
Username for 'https://github.com': [email protected]
Password for 'https://[email protected]@github.com': 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 319 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/sometestuser2/temp.git
 * [new branch]      develop -> develop

בעצם מה עשינו? יצרתי ענף חדש. הענף החדש נוצר מהענף שבו הייתי (במקרה הזה master) והתפצל ממנו. עכשיו כל אחד שיש לו הרשאה מתאימה (ואם אני משתמש בגיטהאב זה כל אחד בעולם) יכול לעשות clone ל-repo שלי ולמשוך את הענף שלי. איך? לעשות clone למדנו במאמר הקודם – פשוט לקחת את ה-URL של השרת המרוחק ולעשות משהו כזה:

git clone https://github.com/sometestuser2/temp.git

ועכשיו הוא צריך לבקש מ-git להביא את כל הענפים המרוחקים שיש:

$ git fetch --all

ואז לעבור אל ה-branch:

git checkout develop

שימו לב שאין כאן b- – אני לא יוצר את הענף מחדש אלא מושך את הענף המרוחק אלי.

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

git pull origin develop

בדומה ל-push, גם כאן אני מכניס שני ארגומנטים – הראשון הוא שם השרת המרוחק שהגדרתי אותו כ-origin (זוכרים?) והשני הוא שם הענף.

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

במאמר הבא נדבר על מיזוג ופיצול בין ענפים שונים.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
מדריך הגיט
git

5 תגובות

  1. ארז הגב דצמבר 29, 2016 בשעה 2:34 pm

    בלוג מעולה!!!

    • יוסי הגב פברואר 13, 2019 בשעה 9:34 pm

      בדוגמא שהבאת כדי למשוך את כל הענפים המרוחקים מדוע צריך לעשות git feath –all אחרי הפקודה של clone.
      האם clone לא מעתיק את כל ה- repository המרוחק ל- מקומי? אם לא אז איזה ענפים הוא מביא אם בכלל?

      • אהד הגב יוני 25, 2019 בשעה 5:20 pm

        יוסי, clone ,נעשה רק פעם אחת כדי להביא את ה repository המרוחק אליך למחשב. אחרי שכבר יש לך את ה source אתה משתמש ב fetch כדי להביא עידכונים מה repository המרוחק . חשוב להבין את ההבדל בין fetch ל pull .Pull יבצע merge במידת הצורך בעוד ש fetch רק מעדכן את ה remotes על המחשב שלך.

  2. Josh הגב אפריל 20, 2021 בשעה 8:40 pm

    אתה תותח ,
    הסברים פשוטים שעושים המון סדר בבלגן

  3. EYTAN הגב מרץ 3, 2022 בשעה 4:03 pm

    אחלה מדריך!
    מאמרים ממש טובים!
    יש דרך למחוק / לבטל branch שיצרתי?

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד