עבודה עם GITHUB






מדריך שימוש ב-Git , GitHub ו-VsCode 

רקע

כאשר עובדים על פרויקט תוכנה בו קיימים מספר קבצים , ואנו מבצעים שינויים רבים בקבצים ומעוניינים לגבות את השינויים האלו למקרה שביצענו שינוי לא טוב ונרצה לחזור לגרסה קודמת . כמו כן בפרויקטים גדולים יותר כאשר צוות מפתחים עובדים ביחד על אותו פרויקט  , כל מפתח משנה את הקבצים שלו והחיבור של העבודה של כולם  צריכה להיות מבוקרת , לשם סיוע בתהליכים אלו משתמשים בתוכנות Verstion Control Software (VCS) .אחת התוכנות המוכרות נקראת Git .

במדריך זה מפורט כיצד אפשר לכתוב פרויקט בסביבת VScode ובעזרת Git לשמור גרסאות של הקוד שלנו במחשב מקומית , ולאחר מכן לשמור גרסאות גם בענן בשרת GitHub .  במדריך זה תתבצע שמירה אוטומטית של הפרויקט גם ב-Git וגם ב-GitHub  ולכן נוח מאוד לכתוב קוד כך שאנו שומרים גיבויים מקומיים וכן בענן (GitHub ).


סביבת הפיתוח VisualStudioCode מבית מיקרוסופט

סביבת פיתוח מבית מיקרוסופט , זוהי גרסה רזה (LightWeight)  של Visual Studio והינה בשימוש נרחב  . ה-VSCode הוא סוג של עורך טקסט עם הרחבות שאפשר להתקין עליו, ההרחבות מאפשרות להוסיף לסביבה יכולות נוספות , למשל ההרחבה Flutter מאפשרת לסביבה לדעת להריץ קוד Dart ולהכיר את ה-Flutter SDK . קיימות הרחבות נוספות כגון python וכדומה.  אנו נשתמש בהרחבות אשר יאפשרו לנו לבצע שמירה אוטומטית כל פרק זמן מסוים כך שהפרויקט שלנו יגובה גם מקומית וגם בענן.

המעבר מסביבת Visual Studio ל- VSCode מבלבל , ננסה להבין זאת מדוגמא :

יצירת פרויקט ב-C# ב-Visual Studio

בסביבת Visual Studio שרוצים לכתוב קוד למשל ב-C# יוצרים פרויקט חדש מסוג Console App ובעצם סביבת העבודה מייצרת לנו תיקייה עם כל קבצי הפרויקט אשר אחד מהם הוא קובץ מסוג SLN ( Solution) ,  קובץ זה הינו קובץ הפרויקט שלנו . זהו אינו הקובץ בו אנו כותבים את הקוד , אלא קובץ אשר מחבר בין כל הקבצים . בנוסף יש לנו קובץ בשם Program.cs שזה קובץ בו אנו נכתוב את הקוד שלנו.

יצירת פרויקט ב-C# ב-VSCode


מה זה Git ? ומה ההבדל בין Git  ל- GitHub ?

אז מה ההבדל בין Git  ל- GitHub ? והאם יש הבדל בכלל ? 

במהלך כתיבת קוד , הרבה פעמים אנחנו משנים את הקוד ומעוניינים לחזור לגרסאות קודמות שכתבנו , ניתן לעשות זאת על ידי שמירת הקבצים כל פעם מחדש , אבל התהליך מאוד מסורבל וקשה לנהל את הגיבויים שיצרנו ,  ולכן נוצרו תוכנות שכל מטרתן היא ניהול גרסאות , Git היא אחת מהן ואת הגרסאות של פרויקט מסוים מנהלת ב-Local Repository . התוכנה  Git הינה תוכנה מקומית אשר מתקינים על המחשב שלנו בסביבת windows או כל מערכת הפעלה אחרת . לעומת זאת GitHub הינו תוכנה המספקת שירות Software As A Service (SAAS , זהו שרת ברשת האינטרנט אשר מספק שירות אחסון של גרסאות Git. את הגרסאות של פרויקט מסוים, GitHub מנהל ב-Remote Repository .

כל קובץ בפרויקט, המנוהל על ידי  Git, יכול להימצא בשלושה מצבים : 


בתוכנה Git משתמשים לאחר ההתקנה בעזרת פקודות CLI (ב-CMD) , להלן  מספר פקודות שימושיות :

git clone "https://github.com/RabinSchool/ex1"  "C:\code\python\ex1"

 קיימות עוד פקודות , אך אלו העיקריות לשימוש התחלתי.


שימוש לדוגמא הוא : אנחנו עובדים על פרויקט ב-VsCode על המחשב הבייתי שלנו , ביצענו Commit לכל השינויים שלנו , ולאחר מכן ביצענו שמירה של השינויים ב-GitHub (על ידי פעולת Git Push)  , אם נרצה לעבוד על הפרויקט מהמעבדה נשתמש בפקודה git clone כדי ליצור גרסה מקומית של ה-Remote Repository שלנו , לחילופין אם כבר יש לנו גרסה מקומית כל מה שנותר לנו זה לבצע פעולת git pull כדי לקבל את כל השינויים שנשמרו בענן GitHub    (מתבצע אוטומטית עם הפתיחה של VSCode ) , להמשיך לעבוד על הפרויקט ולבצע commit ו-push כדי לשמור את השינויים בענן . 


הכנת סביבת עבודה לבית  - התקנות והגדרות VSCode לעבודה עם Git ו-Github 

הכנת סביבת העבודה מקומית  - התקנת Git , VSCode , Vscode Extensions

לתלמידי רבין מזכרת בתיה , קיים script אשר מבצע את כל השלבים הבאים מכאן ואילך אוטומטית , אנא פנו למורה  !


א.        ms-python.python  - הרחבה מאת מיקרוסופט להרצת קוד פייתון.

ב.       GitHub.vscode-pull-request-github  - הרחבה לשם חיבור ל-GitHub .

ג.        emeraldwalk.RunOnSave  -  לביצוע שמירה אוטומטית .

ד.       donjayamanne.githistory – הרחבה לניהול גרסאות שנשמרו

ה.       Dart-Code.flutter  הרחבה לכתיבת - flutter  בשימוש לשכבת יב

ו.        Dart-Code.dart-code (מותקן אוטומטית עם ההרחבה הקודמת) הרחבה לכתיבת קוד dart - בשימוש לשכבת יב.

 


הגדרת שמירת שינויים אוטומטית של הפרויקט שלנו ב-GitHub

לשם שמירת השינויים אוטומטית ב-GitHub , נשתמש בהרחבה  ב-VsCode  וכן בהגדרת שמירה אוטומטית ב-VSCode  

לתלמידי רבין מזכרת בתיה , קיים script אשר מבצע את כל השלבים הבאים מכאן ואילך אוטומטית , אנא פנו למורה  ! 

   ,

"emeraldwalk.runonsave": {

        "commands": [

            {

                "match": ".*",

                "cmd": "git add . && git commit -m 'autosave' && git push"

            },

 

        ]

    },

    "files.autoSave": "afterDelay",

    "githubPullRequests.pullBranch": "always",

    "files.autoSaveDelay": 15000

 


אם תפעלו על פי מדריך זה הפעולות האלו יבוצעו אוטומטית כל פעם שתשמרו את הפרויקט שלכם (CTL + S) בנוסף כך פעם שתפתחו את ה-VSCode יבוצע pull כדי לקבל שינויים שנמצאים בשרת לפני העבודה . ולכן יש להמתין מספר שניות לפני שמתחילים ממש לכתוב לאחר הפתיחה של הפרויקט שלכם ב-VSCode ! נרחיב על כך בכיתה שניפגש.


שלב 3

שלב 4

שלב 5

שלב 6

התחלת משימה מ-GitHub Classroom

 יש לשמור את הקישור ב-Github של המשימה שנוצרה עבורכם לפני ביצוע השלבים הבאים.

במידה ותשאלו לגבי הרשאה ל-GitHub אנא אשרו זאת ובחלון הבא יש לבחור open

 


 שימו לב אם ביצעתם את השינויים להפעלת שמירה אוטומטית אזי השינויים שלכם נשמרים כל 15 שניות אוטומטית גם ב-GitHub . אם זה לא קורה (אתם רואים את השינויים שלכם תחת ה-Tab שנקרא Source Control )  אתם צריכים לרשום ב-Terminal ב-VsCode של הפרויקט שלכם את הפקודה Git Status  


לחילופין אתם מוזמנים לבצע commit  ו- push  ולאחר מכן sync, כל פעם שתרצו לשמור את השינויים שלכם ב-GitHub  (ניתן לבצע זאת דרך מהתפריט בצד שמאל , תחת האופציה source control )