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

עבודה עם גיטהאב

רן בר-זיק פברואר 7, 2016 7:07 am 6 תגובות

הדגמה והסברים על תרומת קוד ב-GitHub

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

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

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

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

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

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

כפתור Fork
כפתור Fork

מיד אחרי הלחיצה, תיווצר גרסה משלי ל-repo. הגרסה הזו זהה אחד לאחד לגרסה המקורית, אבל עם הבדל משמעותי אחד – ה-repo שלי הוא שלי ואני יכול לשנות אותו. עכשיו אני נכנס למחשב המקומי שלי על מנת שאוכל לבצע שינויים בקוד. איך אעשה את זה? באמצעות clone, על clone למדנו במאמר מוקדם יותר על git.

ניתן לעשות git clone עם הכתובת של ה-repo ב-SSH או ב-HTTPS. מדובר בשיטות שונות של התחברות, למרות שיותר נוח להשתמש ב-SSH, במדריך עצמו נשתמש ב-HTTPS ואת ה-SSH נשמור למאמר אחר.

git clone https://github.com/barzik/grunt-email-boilerplate.git
clone example
clone example

עכשיו אני מבצע את השינויים, נשים לב שיש כמה ענפים ב-repo, על מנת לעבור ביניהם אני יכול לכתוב git co BRANCHNAME. יש פרויקטים שמבקשים לדחוף את כל השינויים ל-develop, יש כאלו שיעדיפו להיות ב-master, יש כאלו שיבקשו לשים את זה בענף נפרד. אם אתם לא בטוחים, אפשר להסתכל על לוג השינויים או לשאול את המפתח. במקרה הזה, ראיתי שמדובר בפרויקט קטן אז החלטתי לדחוף את השינויים שלי אל ה-master.

אחרי שביצעתי את השינויים, אעשה commit. על ה-commit דיברנו במאמר קודם ולא ארחיב עליו יותר מדי. בגדול:

$ git commit -m'Adding image as paths variable'
[master fc75522] Adding image as paths variable
 1 file changed, 11 insertions(+), 9 deletions(-)

אחרי שביצענו את השינוי, הגיעה העת לדחוף אותו. אני אעשה push ל-master שלי.

$ git push origin master
Counting objects: 10, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 463 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To [email protected]:barzik/grunt-email-boilerplate.git
   638a710..fc75522  master -> master

עכשיו ה-repo שלי שונה מה-repo המקורי:

ה-repo שלי מכיל את ה-commit שלי שלא נמצא ב-repo המקורי
ה-repo שלי מכיל את ה-commit שלי שלא נמצא ב-repo המקורי

אם אני מרוצה, אני יכול לבצע pull request, אכנס אל ה-repo שלי בגיטהאב ושם הממשק עצמו יציע לי לבצע pull request:

הצעה של pull request ב-GitHub
הצעה של pull request ב-GitHub

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

סקירת שינויים של ה-pull request
סקירת שינויים של ה-pull request

מה קורה אם יש לי קונפליקט? זה יכול לקרות אם עד שיצרתי את ה-pull request, הקוד המקורי שונה. במקרה הזה, אני צריך למשוך את השינויים שלי מהקוד המקורי באמצעות git pull או git rebase. איך אני עושה את זה? הרי ה-repo שאני מתעדכן ממנו הוא ה-repo שלי (barzik), לא ה-repo המקורי (dwightjack). התשובה היא פשוטה, אני צריך להגדיר remote נוסף שהוא לא origin. איך עושים את זה? פשוט:

git remote add upstream [email protected]:dwightjack/grunt-email-boerplate.git

אם אני אכניס את הפקודה git remote -v, אני אראה את כל המקורות שלי:

$ git remote -v
origin	[email protected]:barzik/grunt-email-boilerplate.git (fetch)
origin	[email protected]:barzik/grunt-email-boilerplate.git (push)
upstream	[email protected]:dwightjack/grunt-email-boilerplate.git (fetch)
upstream	[email protected]:dwightjack/grunt-email-boilerplate.git (push)

הפקודה git pull upstream master תביא אלי את ה-master של ה-repository של dwightjack. אני יכול לעשות כמובן rebase או pull & merge. אחרי שביצעתי את יישוב הקונפליקטים/ העדכון, אני אדחוף את הכל שוב ל-master שלי (origin) ואחזור לשלב ה-pull request.

אחרי סקירת השינויים, אני אכתוב מסר למתחזק ה-repository, חשוב שהמסר יהיה בהיר ויסביר את מהות השינויים. במקרה הזה, מדובר בשינוי פשוט, אז לא כתבתי יותר מדי.

הודעת pull request
הודעת pull request

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

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

אם הקוד שלי יתקבל, אז כל אחד בעולם יוכל להנות מהתרומה שלי. יאי לקוד הפתוח!

במאמר הבא ב-GitHub אנחנו נדבר על git alias.

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

6 תגובות

  1. רפי הגב פברואר 8, 2016 בשעה 4:42 pm

    כדאי לכתוב על איך מעדכנים אחת הקומיט אחרי שקיבל הערות

  2. רן בר-זיק הגב פברואר 9, 2016 בשעה 12:05 pm

    רעיון טוב, הוספתי כמה משפטים על כך. תודה!

  3. אלעד הגב פברואר 24, 2016 בשעה 12:44 pm

    יש לך טעות בפקודת git remote -v.

    כתבת:
    giremote -v

    • רן בר-זיק הגב פברואר 28, 2016 בשעה 11:26 am

      תיקנתי, המון תודה על התיקון! 🙂

  4. אלעד הגב פברואר 24, 2016 בשעה 12:45 pm

    נ.ב. תודה! עוד פוסט חשוב…

  5. משתמש אנונימי (לא מזוהה) הגב מרץ 6, 2016 בשעה 3:17 pm

    מעולה

השארת תגובה

ביטול

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

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

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