מפתח ממוצע מבצע מאות עדכונים בחודש, ובלי Git גרסאות קוד נמחקות ונעלמות בתוך שניות. רוב האנשים שמתחילים לבנות אתר או מזמינים מוצר דיגיטלי נתקלים בשני שמות שנשמעים כמעט אותו דבר: Git ו-GitHub. הם שני דברים שונים. Git נכתבה ב-2005 בידי לינוס טורבאלדס כתוכנה מקומית למחשב. היא שומרת היסטוריה מלאה של כל קובץ, ומתעדת מי עשה כל עריכה, מתי ולמה. שום מידע לא עולה לרשת מעצמו.
GitHub הוא אתר בבעלות מיקרוסופט שמאחסן את אותם מאגרים בענן כדי לאפשר גיבוי ושיתוף פעולה. רוב הקוד בעולם נשמר ומנוהל שם כיום. אם אתם מזמינים מתכנת או חברת פיתוח חיצונית, המאגר חייב להיפתח בחשבון שלכם. כשספק שומר את הפרויקט בחשבון הפרטי שלו, השליטה שלכם בקוד נעלמת ברגע שיש מחלוקת. החזקה ישירה במאגר מעניקה לכם בעלות אמיתית על הנכס הדיגיטלי.
זה לא שווה את הסיכון. קחו תמיד בעלות על המאגר.
ההבדל בין המחשב לענן
העבודה עם Git במחשב מתחילה בתוך תיקיית פרויקט ייעודית שנקראת מאגר, או repository באנגלית. כאשר מפעילים בתוך תיקיית פרויקט קיימת את הפקודה git init, נוצרת בה תת תיקייה נסתרת בשם .git שמכילה את שלד המערכת. מרגע זה המחשב יודע לנטר שינויים בין גרסאות. כדי להתחיל לעקוב אחרי קבצים בפועל צריך להשתמש בפקודות git add עבור הקבצים הרצויים, ולאחר מכן לבצע git commit כדי לרשום את הגרסה הראשונה. עם זאת, כל המידע הזה נשאר סגור על הדיסק הקשיח שלכם בלבד.
GitHub פותר את בעיית הגיבוי והשיתוף. הוא מקבל עותק של המאגר, מציג את ההיסטוריה בדפדפן, ומספק כלים לניהול הרשאות, בקשות סקירה ובדיקות תוכנה. התיעוד הרשמי מראה שאפשר להתחיל לעבוד באתר גם בלי לדעת לתכנת, בלי לגעת בשורת הפקודה, ובלי להתקין את Git על המחשב. אתם נכנסים לאתר, לוחצים על New repository, ובוחרים שם כמו hello-world יחד עם תיאור קצר. הממשק נותן לבחור אם המאגר יהיה ציבורי לכל העולם או פרטי, ומומלץ לסמן יצירה אוטומטית של קובץ README.md.
קובץ README הוא המקום שבו מסבירים מה הפרויקט עושה. הוא נכתב בשפת Markdown, שהיא שפה קלה לקריאה ולכתיבה עבור עיצוב טקסט פשוט.
ארבעה צעדים לעבודה נכונה
המונח המרכזי הראשון בעבודה הוא ענף, או באנגלית branch. המאגר מתחיל תמיד מענף ברירת מחדל מרכזי שנקרא main, שנחשב לגרסה המחייבת והסופית של הפרויקט. אם רוצים להוסיף רכיב או לבצע ניסוי בלי לפגוע בגרסה היציבה, פותחים ענף נפרד שמקבל עותק מדויק של אותה נקודת זמן. פיצול כזה מונע תקלות קריטיות באתר הפעיל של העסק. העבודה שנעשית על ענפים נפרדים לא מופיעה בענף המרכזי עד שלא מבצעים מיזוג מסודר.
עבודה ישירה על main מסוכנת. פתחו תמיד ענף נפרד לכל שינוי.
בכל פעם שמעדכנים קובץ ושומרים אותו בתוך Git או באתר GitHub, הפעולה הזו נקראת commit. לכל שמירה כזו מצרפים הודעה תמציתית שמסבירה למה בוצע העדכון. רצף ההודעות האלה מרכיב את ההיסטוריה המלאה של המוצר, כך שכל אדם בצוות מבין בדיוק מה השתנה לאורך חודשים ושנים.
לאחר שמירת השינויים על הענף מגיע השלב המרכזי בשיתוף פעולה: פתיחת pull request. המערכת משווה בין הענף החדש לענף main ומציגה מסך הבדלים שנקרא diff, שבו תוספות צבועות בירוק ומחיקות צבועות באדום. זה הרגע שבו סוקרים את השינויים לפני שהם נכנסים לקוד הפעיל של העסק. אפשר לפתוח pull request מיד עם השמירה הראשונה כדי לפתח שיחה עם הצוות, עוד לפני שהקוד גמור לחלוטין. כשהכול נבדק ותקין, לוחצים על Merge pull request כדי למזג את הקוד חזרה אל main, ולאחר מכן לוחצים על Delete branch כדי למחוק את הענף הזמני.
תהליך עבודה מומלץ במאגר
- יצירת מאגר עם קובץ README
- פיצול ענף חדש מתוך main
- שמירת שינוי בקובץ עם הודעת commit
- פתיחת pull request ובדיקת מסך diff
- אישור מיזוג ומחיקת הענף הזמני
עלויות ומסלולים ב-GitHub
המסלול הבסיסי של GitHub עולה $0 לחודש לנצח עבור יחידים וארגונים. הוא כולל מאגרים פרטיים וציבוריים ללא הגבלה, 2,000 דקות ריצה חודשיות לשירות CI/CD של GitHub Actions, נפח אחסון של 500MB לחבילות קוד, וסריקות אבטחה ועדכוני גרסאות אוטומטיים דרך Dependabot. עבור יזם יחיד או עסק שמתחיל לפתח מערכת, לא הייתי משלם שום דבר מעבר למסלול החינמי הזה, שמספק את כל מה שצריך.
שדרוג למסלול בתשלום שווה את זה רק אם מנהלים צוות שדורש הגנה מחמירה על ענפים ובודקים מרובים לכל שינוי. מסלול Team עולה $4 למשתמש בחודש ומספק 3,000 דקות Actions, נפח אחסון של 2GB לחבילות, דפי ויקי, וסביבות מחשוב בענן מסוג GitHub Codespaces שמתחילות ב-$0.18 לשעת מחשוב ו-$0.07 לגיגה אחסון בחודש. מעליו קיים מסלול Enterprise שמתחיל ב-$21 למשתמש בחודש ומציע 50,000 דקות ריצה ו-50GB אחסון. לרוב המוחלט של העסקים הקטנים והיזמים, המסלול החינמי הוא בדיוק מה שמתאים.
| מסלול | מחיר למשתמש בחודש | דקות CI/CD בחודש | נפח אחסון חבילות |
|---|---|---|---|
| Free | $0 | 2,000 | 500MB |
| Team | $4 | 3,000 | 2GB |
| Enterprise | $21 ומעלה | 50,000 | 50GB |
איפה מתחילות הבעיות
המערכת אמנם מסודרת מאוד, אבל היא דורשת משמעת ולא פותרת טעויות אנוש. כשיותר מאדם אחד עורך את אותה שורה בקובץ בשני ענפים שונים, GitHub לא מסוגל להחליט איזה נוסח להעדיף ויוצר התנגשות שנקראת conflict. במצב כזה תהליך המיזוג נעצר ונחסם לחלוטין, עד שיושבים ופותרים את ההבדלים ידנית או מנהלים דיון בהערות של ה-pull request.
קונפליקטים הם עניין שגרתי בעבודה. אל תיבהלו מהם כשהם קופצים על המסך.
חיסרון בולט נוסף למשתמש הישראלי הוא השפה. כל הממשק של GitHub פועל באנגלית בלבד, וכל המונחים, הכפתורים ומסמכי ההדרכה מוצגים בשפה זו. כאשר עובדים עם קבצי טקסט שמכילים עברית, שורות הפוכות ושיבושי כיווניות מקשים לעיתים קרובות על קריאת מסכי ההשוואה והשינויים. מעבר לכך, אף שאתר האינטרנט נגיש לחלוטין בלי התקנות, שליטה בתוכנת Git המקומית על המחשב דורשת התמודדות עם שורת הפקודה והבנה של פקודות כמו git init ו-git commit, מה שמייצר עקומת למידה ממשית למי שאינו מפתח מנוסה.
מקורות
- docs.github.comhttps://docs.github.com/en/get-started/start-your-journey/hello-world
- git-scm.comhttps://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository
- github.comhttps://github.com/pricing
המדריך נכתב מהמקורות שלמעלה בתאריך הפרסום. מחירים ותנאים משתנים; לפני החלטה כספית בודקים מול המקור. מצאתם טעות? כתבו.