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

Git – יצירת pull request

רן בר-זיק ינואר 3, 2016 7:34 am 2 תגובות

עדכון ופתרון קונפליקטים ב-git עם git pull וגם מעט על pull request.

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

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

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

במאמר הקודם למדנו על יצירת ענף חדש – ראשית מקומית (באמצעות branch -b) ואז בשרת (באמצעות git push). נותרו לנו כמה שאלות פתוחות – הראשונה היא עדכון הענף שלי. נניח והתפצלתי מה-master אל develop. בינתיים מישהו אחר עידכן את ה-master. איך אני מבצע עדכון? יש כמה דרכים לעשות את זה. הדרך הפשוטה יותר היא לבצע משיכה של הענף אלי באמצעות pull.

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

git pull origin master

מה יש שם? git pull הוא מוכר, ה-origin הוא השם של השרת המרוחק כפי שהוא בדרך כלל מוגדר. master הוא שם של ה-branch:

מייד כל הקומיטים שנעשו לשרת המרוחק נמשכים אלי ואם יש קונפליקטים (ויש), הם יוצגו בדיוק כמו ב-SVN. אני נדרש לבצע תהליך resolve (בדיוק כמו ב-SVN) ואחרי כן, לבצע add ו-commit לתיקונים עצמם שנחשבים שינוי קוד. איך זה נראה? בדיוק ככה:

משיכת השינויים שנעשו בקומיט אחר אלינו. פתרון הקונפליקטים נעשה בענף שלנו.
משיכת השינויים שנעשו בקומיט אחר אלינו. פתרון הקונפליקטים נעשה בענף שלנו.

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

אם אני עושה git pull origin master לפני שאני אדחוף ולא יהיו קונפליקטים, מן הסתם לא אצטרך לפתור, אבל כאשר אני אעשה push, בלוג אני אראה שיש לי קומיט ריק. נשאלת השאלה למה? התשובה היא שכאשר אני עושה git pull אני תמיד תמיד לא רק מביא את השינויים מהגרסה המרוחקת, אלא גם עושה merge וזה חייב להרשם בלוג גם אם אין שום קונפליקט. יש דרך להמנע מזה והיא נקראת rebase. אדבר עליה במאמר הבא.

אם אנחנו יודעים למשוך repo מרוחק, לבצע שינויים, לעדכן אותו באופן סדיר וגם לדחוף אותו ל-master. הגיע הזמן לדעת איך עושים אותו בעולם האמיתי. בעולם האמיתי לעולם לעולם לא דוחפים קוד ישירות לתוך ה-master או ה-develop או ענף מרכזי אחר. כל השינויים בענפים מרכזיים נעשים באמצעות pull requets. כאשר כל השינויים לענפים המרכזיים לא נעשים עם push אלא אך ורק עם merge.

איך עושים את זה? נניח ויש לי master שהוא הגרסה המרכזית. אני רוצה להוסיף תכונה כלשהי. אני אפתח את ה-master אצלי באמצעות clone או (אם יש לי את master במחשב) אני אעדכן אותו באמצעות pull. אחרי זה אני אצור ממנו ענף באמצעות checkout -b. אני מבצע את השינויים בקוד שנדרשים על מנת להוסיף את התכונה, דוחף את השינויים כענף מרוחק. אם יש לי גיטהאב, באמצעות הממשק הגרפי אני מבקש pull request. אם יש לי מערכת אחרת (כמו stash) אני מבצע את ה-pull request באמצעות המערכת הזו. זה שיש לו את הרשאות הכתיבה ל-master בוחן את הקוד, יכול להעיר את ההערות שלו, אני יכול לתקן (ולדחוף את התיקונים לאותו branch כמובן) ואחרי שהכל תקין, ה-pull request יאושר והגרסה שלי תתמזג עם ה-master.

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

במאמר הבא אנו נלמד על rebase ואיך הוא שונה באופן מהותי מ-git pull.

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

2 תגובות

  1. אורן הגב דצמבר 4, 2016 בשעה 6:59 pm

    האם הכוונה בסוף המאמר ל push request?
    (כי אם אני מושך אלי, למה צריך אישור ממישהו)
    תודה

    • משתמש אנונימי (לא מזוהה) הגב דצמבר 22, 2016 בשעה 5:32 pm

      זה pull ולא push
      אתה דוחף את הקוד שלך, ואתה מבקש מהמנהל שימשוך את הקוד שלך וימזג אותו עם ה-master

השארת תגובה

ביטול

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

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-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 | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

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