אם אתם נמנים מקוראי הבלוג הזה, כנראה שכבר הפסקתם לספור את כמות הפעמים שביקרתם בפלטפורמת אחסון הקוד הפופולארית github. מאז תחילת העשור השני של שנות 2000 הפכה github לפלטפורמת ניהול הקוד הפופולארית ביותר למיזמי קוד פתוח וכנראה שלא תמצאו בעל יידע בפיתוח תוכנה שלא משתמש בפלטפורמה הזו.
git היא המערכת הפופולארית ביותר לניהול גרסאות קוד, בה משתמשים מרבית צוותי פיתוח ברחבי העולם עבור ניהול הקוד, תיאום העבודה המשותפת ומעקב אחר שינויים בקוד. את git פיתח מייסד לינוקס ליונס טורבאלדס בשנת 2005.
בשורות הבאות אסקור את השימוש בgit עבור ניהול הפרוייקטים שלכם בgithub, החל מהסבר לקישור החשבון שלכם בgithub לgit ועד להסבר בסיסי על מגוון המושגים הנחוצים לעבודה הפשוטה עם git וgithub. יש לציין כי המדריך יעסוק במושגים ובפעולות הבסיסיות בלבד.
כשלב ראשון, נוריד את Git לשולחן העבודה שלנו. עבור ההדגמה אני אשתמש בwindows, אך הפקודות שאציג במדריך (מלבד צורת ההתקנה עצמה) זהים גם בLinux וMac. את ההורדה נבצע מהאתר הרשמי של git אליו תוכלו להגיע בלחיצה כאן.
נתקין את git, כשלב ראשון נקרא את תנאי השימוש ואם אנו מסכימים להם נלחץ על next:
אין צורך לגעת גם באפשרויות הבאות:
נמשיך עם next עד שנגיע לאפשרות הבחירה בין שימוש בענף הראשי המגיע כברירת מחדל עם git (ענף הmatser), לבין שימוש בשמות מתואמים אישית כגון main. אני בחרתי להמשיך עם ברירת המחדל (בהמשך המדריך תבינו יותר לעומק למה git מתכוונת במונח 'ענף'), אתם יכולים לבחור אחרת:
לאחר מכן git יברר האם אנו מעוניינים להשתמש רק בשורת הפקודה של git bash או לבצע את הפעולות גם דרך הcommand line, אנו נבחר באפשרות השנייה:
באפשרות הבחירה הבאה אני אבחר בשימוש בספריית openssl עבור אימות אישורי השרת:
נצטרך גם לציין את אופן הטיפול של git בסיומות שורות, במקרה הזה אבחר באופציה הראשונה:
נצטרך לאשר עוד כמה הגדרות, כמו טיפול במטמון, ליבת git וכו' וכו'. הישארו עם הגדרות ברירת המחדל ולאחר מספר הגדרות תגיעו להגדרה האחרונה, כאן אין צורך לאשר ואפשר פשוט ללחוץ על install:
לאחר סיום ההתקנה, נבקש מהמערכת להפעיל את git ונתחיל בעבודה:
והנה, נפתח לנו מסוף שורת הפקודה של git:
כעת ניכנס לgithub וניצור את החשבון שלנו:
נקבל הודעת welcome חגיגית ונזין את ההעדפות שלנו:
כעת נצטרך לאמת את הדוא"ל שלנו:
לאחר ביצוע האימות, נבחר באפשרות יצירת המאגר (create a repository) ונתחיל את התכל'ס:
ניצור מאגר לדוגמא, ניתן לו שם ותיאור ואשר יצירת קובץ readmd.md, קובץ בו יצוין תיאור המאגר:
שימו לב שכעת המאגר הרשמי שיווצר ייקרא בשם main כברירת מחדל ולא master כפי שהגדרנו בהגדרות ברירת המחדל של git ובעבר אף היה בהגדרות ברירת המחדל של יצירת המאגר דרך הדפדפן. את אפשרויות הgitignore וlincense לא סימנו ובהמשך אסביר מה תפקידן בדיוק ומתי כדאי לסמן אותן. כמו-כן, שימו לב שאין אפשרות לבצע רווחים בשם המאגר והרווחים, אם נציין אותם, יוחלפו בסימן (-).
אם ביצעתם הכל נכון, המאגר שלכם יווצר:
כעת לחצו על ריבוע הקוד, והעתיקו את הלינק משם ע"מ שנוכל לבצע לו clone:
כעת פתחו את מסוף שורת הפקודה של הgit שלכם. ע"מ שנוכל להוריד את המאגר למחשב שלנו ולשנות אותו דרך המחשב, נצטרך קודם לקשר את חשבון הgithub שלנו לgit:
נזין את שם המשתמש שלנו בעזרת הפקודה הבאה (במקום username הכניסו את שם המשתמש שלכם):
'git config --global user.name 'name
נזין את הemail שלנו בעזרת הפקודה הבאה (במקום your mail הכניסו את כתובת הדוא"ל שלכם):
'git config --global user.email 'email
ונוודא שההגדרה בוצעה בהצלחה בעזרת הפקודה הבאה:
git config --global --list
כעת נוריד את המאגר שלנו:
'git clone 'url
כעת שאתם יכולים לבחור להיכן המאגר יירד בעזרת ניווט אל המיקום המועדף עליכם בעזרת cd. את הנתיב הנוכחי שלכם תוכלו לראות בעזרת הפקודה pwd.
ניכנס לתיקיית המאגר שירדה למחשב שלנו וניצור קובץ חדש. אני אצור לצורך הדוגמא קובץ פייתון בו אכתוב פונקציה שמדפיסה את המחרוזת 'blog cyber-il'. ניכנס למאגר:
ניצור את קובץ הפייתון:
כעת אנו רוצים להוסיף את הקובץ למאגר הפייתון שלנו. ניכנס לתיקיית המאגר במסוף הgit שלנו:
שימו לב לmain שמופיע לכם בסוגריים. כפי שכבר הזכרתי, זהו שם ברירת המחדל שgithub נותנת למאגר הראשי. בgit לעומת זאת שם ברירת המחדל הוא master.
כעת נכיר את הפקודה git status. פקודה זו תציג לכם את המצב של המאגר שלכם. מדובר באחת הפקודות החשובות ביותר בעבודה השוטפת עם git. לדוגמא, אם נבצע כעת את הפקודה נקבל את הפלט הבא:
git כותב לנו שיש קובץ אחד בתיקייה, אך הוא טרם עלה למאגר github.
אם נרצה להוסיף אותו, נצטרך להשתמש בפקודה add:
git add example.py
אם כעת נעשה git status נראה שהקובץ אכן נטען (הוא טרם עלה למאגר הgiuthub, מיד נעלה אותו):
לאחר שהוספנו את הקובץ, נרצה להוסיף לו commit. תחת commit אנו נגדיר את פעולת ההעלאה שביצענו (אם אנו מעלים קובץ, כמו במקרה שלנו, נוכל לדוגמא לציין add file name, אם רק ביצענו עדכון, תחת commit נציין מה העדכון שביצענו מבצע וממילא מה שינתה במאגר הוספת הקובץ החדשה).
'git commit -m 'description
נוכל לבצע את פעולת הcommit והadd בפקודה אחת בעזרת שימוש בam-.
'git commit -am 'description
לאחר שביצענו את שלב עדכון המאגר, נבצע כעת את העדכון גם באחסון של המאגר בgithub בעזרת git push:
git push origin main
(אם המאגר הראשי שלכם הוא matser, שנו לgit push origin master).
כעת git יבצע התחברות למשתמש הgithub שלכם ע"פ הפרטים שהזנתם:
לאחר שתזינו את הסיסמא, אם ביצעתם הכל בהצלחה יופיע לנו הפלט הבא:
כעת אם נחזור למאגר הgithub שלנו נראה שנוסף לו הקובץ example.py:
כעת נדגים ביצוע פעולה הפוכה. יצירת מאגר במחשב המקומי שלנו והעלאתו לgithub.
בשלב הראשון, ניצור את תבנית המאגר בgithub (הפעם לא נצטרך להוריד את המאגר למחשב ולבצע עדכון של התוכן בו, אלא נייצר את קבצי המאגר במחשב ונעלה אותם בעצמנו לgithub, ללא הורדה של המאגר קודם לכן, הפעם נכניס בעצמנו את הקו המפריד (-) במקום רווח:
כעת נעבור לעבודה עם הgit. נשתמש ב ~ cd ע"מ לחזור לתיקייה הראשית (אם בחרתם בתיקייה אחרת לעבודה עם git תוכלו להשתמש ב ..cd. לאחר מכן, נגדיר את המאגר בעזרת git init וציון שם המאגר כפי שיצרנו אותו בgithub:
כעת לאחר שיצרנו את הפרוייקט שלנו, זה הזמן להיכנס לתיקיית המאגר ולהוסיף לה קבצים:
שימו לב שכעת המאגר הראשי מוגדר לנו כmaster, זהו בגלל שבהגדרות הראשונות של git הגדרנו שהמאגרים הראשיים יהיו master, כברירת המחדל בgit ובשונה מברירת המחדל בgithub שהיא main. ניצור בו קובץ readme.md (תוכלו כמובן ליצור גם קובץ בצורה ידנית):
כעת ניצור בו גם-כן קובץ פייתון כולשהו:
כעת אם נבצע git status, נראה שוב שישנם 2 קבצים שלא הוגדרו:
נבצע העלאה ל2 הקבצים ביחד עם . git add (כלומר, תבצע העלאה לכל הקבצים בתיקייה). אם נסתכל לאחר מכן על git status נראה שאכן ההעלאה בוצעה:
כעת נבצע commit לקבצים בעזרת git commit -m:
'git commit -m 'new file
לקראת סיום, נקשר בין המאגר המקומי שלנו לבסיס המאגר שיצרנו בgithub עם git remote:
<git remote add origin <url
ולסיום, נבצע את העלאת הקבצים בפועל בעזרת push (שימו לב הפעם לציין שהמאגר הראשי שלהם הוא master):
אגב, תמיד נוכל לקבל את כתובת המאגר שלנו בעזרת הפקודה git remote -v.
זוכרים שבעת יצירת המאגרים שלנו, בתחילת המדריך, הופיעה לכם אפשרות הgitignore? אפשרות זו מאפשרת לנו לציין עבור git מאלו קבצים להתעלם ולא להכניסם למאגר הציבורי שלנו. כשנבצע העלאה של מאגר לgithub, נצטרך תמיד לוודא שאנו לא מבצעים העלאה של קבצי log או קבצי סיסמאות, עבור פעולה זו נשתמש בgitignore.
ניצור קובץ gitignor במאגר שלנו:
touch .gitignore
בתוך הקובץ נכניס את שמות התיקיות והקבצים שנרצה שgit תתעלם מהם, לדוגמא אם נרצה שgit תתעלם מכל קבצי הlog (וצריכה להיות לנו סיבה מאד טובה למה לא לרצות את זה) נוכל לציין בקובץ log.*
ע"מ לוודא שההגדרה בוצעה בהצלחה נשתמש בפקודה שתציג לנו את הקבצים המוסתרים:
git status --ignored
ענפים – branch
branch כשמם כן הם, גרסאות חדשות של הפרוייקט שלנו או פונקציונליות חדשה ומשמעותית שאנו מוסיפים אליו, ענפים של הפרוייקט הראשי. כשאנו מבצעים שינויים נקודתיים בקוד, הם נכנסים תחת ההגדרה של commit. ברגע שנשחרר גרסה חדשה לחלוטין של הפרוייקט שלנו או אפילו נוסיף לכלי שלנו פונקציונליות חדשה משמעותית במסגרת גרסה קיימת (פעולה נפוצה, לעיתים קרובות בכל כלי משמעותי שתפתחו), פה כבר, נכניס זאת לרוב תחת ההגדרה של branch.
כפי שכבר למדנו, הענף הראשי שלנו יקרא master או main, כלומר – הענף הראשי של המאגר ונוכל תמיד לחזור אליו כשנרצה. לאחר מכן, לכל ענף נוכל לתת את השם שנרצה, בהתאם למה שהוא מייצג, לדוגמא לגרסה 2 של הכלי שלנו נוכל לקרוא version 2. כמו-כן, חשוב לציין שהענף שאנו עובדים עליו באותו רגע ייקרא head.
ע"מ לראות את רשימת הענפים שקיימים במאגר הספציפי שחיברנו לgit, נוכל להשתמש בפקודה הבאה:
git show-branch --list
אם נרצה לייצר ענף חדש נשתמש בפקודת הbranch:
<git branch <branch name
אם נרצה לעבור לענף אחר, נשתמש בפקודת הcheckout:
<git checkout <branch_name
נוכל גם ליצור מאגר וגם להיכנס אליו בפקודה אחת:
<git checkout -b <branch_name
ע"מ למחוק ענף נוכל להשתמש בD-:
git branch -D branch_two
ע"מ למשוך שינויים ממאגר כולשהו אל המאגר המקומי שלנו נשתמש בפקודת הpull:
git pull origin master
צפייה בפעולות קודמות
כמפתחים, נרצה פעמים רבות לראות את הפעולות האחרונות שבוצעו בקוד שכתבנו (כל פעולות הcommit), עבור כך נוכל להשתמש בפקודת הlog:
git log
נוכל גם לראות רק את הcommits האחרונים ולא את כל הפעולות שבוצעו בקובץ מאז יצירתו. במקרה כזה נוכל להגביל את כמות התוצאות שנרצה לקבל לאחר הוספת n-:
git log -n 20
כשאנו עובדים בצוות, נרצה פעמים רבות לראות פעולות אחרונות שביצע דווקא אחד העמיתים שלנו ולא את כלל השינויים שבוצעו במאגר, נוכל לבצע זאת בעזרת שימוש בauthor– בפקודת הlog (נציין את הusername של המחבר שאת השינויים שלו אנו רוצים לראות):
git log --author 'eliya'