מה זה בכלל גיט?

28/09/2024

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

1. בעיה ראשונה - Undo

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

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

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

2. בעיה שניה - מה רץ אצל הלקוח

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

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

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

3. בעיה שלישית - שיתוף פעולה

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

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

4. שתי מחשבות על לימוד גיט

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

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

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