ברוכים הבאים לקורס Git

1. מה זה Git?

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

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

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

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

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

2. מה זה בכלל ניהול גירסאות?

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

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

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

  3. מערכת ניהול גירסאות תאפשר לכם "לשמור" או לתייג גירסא מסוימת כך שתוכלו להיות בטוחים שאתם עובדים על אותו הקוד בדיוק גם אם יש לכם מספר מכונות (למשל השרת ומכונת הפיתוח).

  4. מערכת ניהול גירסאות תאפשר לכם לעבוד במקביל על מספר פיצ'רים ולהעלות לשרת רק את אלה שמוכנים בלי שהפיצ'רים שנמצאים באמצע עבודה יידחפו ויגרמו לבעיות.

למתכנתים שעובדים בצוות יש עוד מספר יתרונות:

  1. מערכת ניהול גירסאות תאפשר לזהות מי הכניס שינוי מסוים למערכת ומה היקף השינוי (עבור כל קטע קוד בתוכנית).

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

  3. מערכת ניהול גירסאות עוזרת לתקשורת בין מתכנתים שכן היא קובעת אמת אחת, מצב אחד של הקוד ונותנת שם למצב זה. כך כולם יודעים שבגירסא 4.2.11 של המוצר יש יכולות מסוימות ותקלות מסוימות וקל יותר לבדוק מי מריץ כל דבר.

3. תוכנית הקורס

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

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

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

החלק החמישי מוקדש לגיטהאב שהוא אתר איחסון הקוד הפתוח הגדול ביותר בעולם שמשתמש בגיט בתור תשתית לניהול הגירסאות בפרויקטים. נראה מה Github נותן למפתחים בנוסף לגיט ונדבר על סינכרון העבודה שלכם גם עם אנשים שאתם לא מכירים דרך הגשת Pull Requests.

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

מוכנים? בואו נצא לדרך.


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

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

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

החלק החמישי מוקדש לגיטהאב שהוא אתר איחסון הקוד הפתוח הגדול ביותר בעולם שמשתמש בגיט בתור תשתית לניהול הגירסאות בפרויקטים. נראה מה Github נותן למפתחים בנוסף לגיט ונדבר על סינכרון העבודה שלכם גם עם אנשים שאתם לא מכירים דרך הגשת Pull Requests.

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

מוכנים? בואו נצא לדרך.