3 בינואר 2020

מה זה Git, מה ההבדל בינו ל-GitHub ולמה זה חשוב ?

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

בין אם אתם סטודנטים, מתכנתים חובבים או מפתחים לעתיד, כדאי שתדעו לפחות כמה מושגים בסיסיים בGit.


אז מה זה Git ?


Git היא מערכת לניהול גירסאות - Version Control System או בקיצור VCS.
ישנם עוד אלטרנטיבות ל-Git, אבל הוא הידוע והמקובל ביותר.

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

למה זה שימושי ? לאינספור סיבות.

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

נשמע לכם כמו CTRL+Z ? זה הרבה יותר. אם אם תעשו UNDO, אתם אף פעם לא יודעים כמה לחזור אחורה ויש סיכון שתחזרו יותר מדי לגירסה שגם היא לא תקינה.

זו רק הסיבה הבסיסית ביותר. יש בלי סוף שימושים ל-Git.

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

מה קורה אם מספר אנשים עובדים על קוד ? איך דואגים שמצד אחד אף אחד לא ימחק לשני את הקוד אבל גם יקבל את העדכונים מהאחר ? משתמשים במושג שנקרא branch. כל מפתח "מתפצל" מהעותק המקורי (המאסטר) ומוסיף את התוספות שלו. כאשר הוא מסיים, הוא מבצע פעולת מיזוג (merge) למאסטר.


כמה מושגי יסוד


אוקיי, אז הבנו בכללי על מה מדובר. מהיכן מתחילים ?

1. מורידים את התוכנה מהאתר של Git.

2. יש להכיר מספר מושגי יסוד כדי שיהיה אפשר להתחיל לעבוד.

commit - שמירה של "התמונה" הנוכחית של הקוד.

branch - "ענף" של עדכונים שיוצא לרוב מזרם העדכונים הרגיל שנקרא לרוב master או dev.

merge - כאשר מאחדים שני branch לאחד, או כאשר רוצים לעדכן את הbranch מתוך ה-branch המרכזי.

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

repository - שרת תומך Git מרוחק שאליו ניתן לסנכרן את העדכונים המקומיים שלכם.

pull - הורדת העדכונים מהשרת המרוחק אל התיקיה של ה-Git המקומית שלכם.

push - העלאת העדכונים מתיקיית ה-Git שלכם אל השרת.


מתחילים לעבוד


אחרי שהתקנתם את התוכנה, יש ברשותכם מספר אפשרויות: לעבוד מתוך ה-CMD הרגיל שלכם או מתוך ה-Shell של Git. למי שמכיר Linux, זה מאד דומה ורוב הפקודות משם יעבדו גם כאן. 

למי שלא זה ולא זה מתאים, תמיד יכול לעבוד עם PowerShell או להוריד את Cmder (שבגירסה המלאה שלה מגיעה יחד עם Git).

אחרי שעברתם לתיקיה אותה תרצו להפוך לתיקיית Git, התחילו עם הפקודה git init.

זהו. עכשיו הפכתם את התיקיה הזו לתיקייה ש-Git יעקוב אחריה.

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

עכשיו השתמשו בפקודה git add והוסיפו את שם הקובץ כדי להוסיף אותו ל-Git.

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

כעת, נסו את הפקודה git status - אתם תראו בפלט את שם הקובץ שלכם ותראו שלמעשה Git זיהה את השינוי שביצעתם.

נניח שהשינוי מתאים לכם ובדקתם את נכונותו וכעת אתם רוצים להכניס אותו ל-Git.

קראו לפקודה git commit -m והוסיפו כמה מילים על מטרת העדכון. אתם אמורים לקבל אישור על ה-commit וכך להמשיך הלאה.

בכל פעם שתרצו לדעת את היסטוריית ה-commitים שלכם, השתמשו בפקודה git log.

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

אז מה זה GitHub ?


Git Hub הוא למעשה אתר עם ממשק חיבור ל-repository שזה למעשה שרת מרוחק של Git. באתר תוכלו ליצור לכם בחינם חשבון ופרוייקט Git, אליו תוכלו להעלות עדכונים.

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

כדאי לציין ש-GitHub אינו האתר היחידי בתחום אך נחשב הגדול ומהמפורסם ביותר.

אם יש לכם "תיק עבודות" של קוד, כדאי שהוא יופיע ב-GitHub.

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

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

כמו כל דבר, אפשר להתחיל ללמוד את הנושא מ-YouTube או לקרוא את ה-Cheat Sheet של GitHub.

למי שמעוניין ללמוד את הנושא ברצינות, מומלץ להסתכל על הקורס הבא ב-Udacity:




בהצלחה !

2 תגובות: