גלה בקרת גירסאות באמצעות Git
קיימים סוגים שונים של מערכות בקרת גירסאות (VCS), אך בדרך כלל ניתן לסווג אותם כמערכות מרכזיות ומבווזרות. בשנים האחרונות (בשל הפופולריות ההוגדלת של DevOps), הקטגוריה האחרונה צברה פופולריות משמעותית, כאשר Git הופכת לתקן דה-פתטו בפיתוח תוכנה מודרנית. VCS מסוים זה יהיה הבחירה המתאימה ביותר לארגון בתרחיש המדגם שלנו, במיוחד בהתחשב בכוונתה להשתמש ב- GitHub כפלטפורמות היעד למעבר DevOps שלה. ביחידה זו, גלו את השימוש ב- Git כפקד גירסאות.
בקרת גירסאות מרוכזת לעומת בקרת גירסאות מבוזרות
הן מערכות מרכזיות לבקרת גירסאות (CVCS) והן מערכות בקרת גירסאות מבוזרות (DVCS) מציעות את היכולת לנהל ולעקוב אחר שינויים בפרוייקטי פיתוח תוכנה. ההבדלים העיקריים ביניהם קשורים לאופי היישום של מאגרים ושיתוף פעולה. במיוחד:
- מיקום המאגר: במערכות מרוכזות ישנו מופע מרכזי אחד של המאגר המכיל את ההיסטוריה המלאה של הפרוייקט. במערכות מבוזרות, לכל חבר צוות בדרך כלל יהיה עותק מקומי אחד בעל פונקציונליות מלאה של המאגר כולו, שעשוי לכלול את היסטוריית הגירסאות המלאה שלו.
- קישוריות רשת: במערכות מרכזיות, נדרשת גישה למופע המרכזי של המאגר כדי לבצע פעולות רבות, כולל עדכונים ואחזור היסטוריה. במערכות מבוזרות, ניתן לבצע את כל הפעילויות מול העותק המקומי של המאגר.
- מודל שיתופי: במערכות מרוכזות, מפתחים בודקים קבצים מהמופע המרכזי של המאגר בזמן שהם מחוברים אליה ברשת לפני ביצוע שינויים ויבצעו את השינויים. פעולה זו מונעת מאנשים אחרים להוציא קבצים. במערכות מבוזרות, מפתחים מבצעים ומבצעים שינויים בעותק המקומי של המאגר, שבנקודה מסוימת מאוחר יותר מסונכרנים עם עותקים אחרים.
- מודל הסתעפות ומיזוג: במערכות מרוכזות, יצירת הסתעפות ומיזוג דורשים בדרך כלל תיאום עם אחרים. במערכות מבוזרות, ניתן ליצור ענפים באופן עצמאי עם עותקים מקומיים ולמזג לאחר מכן.
חשוב לציין כי, בעוד שהמודל המבווזר אינו מסתמכות על מאגר מרכזי (באופן מסורתי), מומלץ ליישם עותק אחד של המאגר, המתארח בשירותים כגון GitHub, GitLab או Bitbucket. מופע זה משמש כנקודת מוקד של שיתוף פעולה וסינכרון.
מינוח Git
כדי להיות מיומנים בעבודה עם Git, חשוב להכיר את המינוח שלה. חלק מהמושפטים ייחודיים ל- Git, המבחנים אותו ל- DVCS אחר. מונחי Git היסודיים ביותר כוללים:
- עץ עבודה: מבנה מדריך כתובות המכיל את כל קבצי הפרוייקט.
- מאגר (המכונה בדרך כלל מאגר): מדריך הכתובות הממוקם ברמה העליונה של עץ עבודה, המארח את כל קבצי הפרוייקט יחד עם היסטוריית הגירסאות של קבצים אלה.
- Clone: הפעולה של יצירת עותק של מאגר מרוחק במחשב מקומי כדי לעבוד על פרוייקט שאליו יש לך גישה.
- מזלג: הפעולה של יצירת עותק המתארח ב- GitHub של מאגר מרוחק כדי לעבוד על פרוייקט שאין לך גישה אליו. בדרך כלל נעשה שימוש במזלג אם בכוונתך לתרום לפרוייקט של מישהו אחר או ליצור גירסה משלך של פרוייקט זה. למרות שאין לך גישת כתיבה למאגר המקורי, באפשרותך לנהל את המזלג שלך באופן מלא.
- בצע: תמונה של השינויים שבוצעו בקבצים במאגר בנקודה מסוימת בזמן. ביצועי Commit משמשים להקלטה ולשמירה של שינויים.
- אחסון זמני של מיקום ביניים (שאינו מהווה חלק מהמאגר) שבו שינויים בקבצים בעץ העבודה מוכנים לפני שהם מבוצעים. הוא מאפשר למפתחים לבחור שינויים שבכוונתם לבצע.
- Branch: סידרה בעלת שם של מבצעים מקושרים. במונחים פשוטים, ענף מייצג גירסה ייחודית של פרוייקט. הדבר מאפשר עבודה על חלקים שונים של פרוייקט בו-זמנית מבלי להשפיע על הגירסה הראשית שלו. ההתחייבות האחרונה בתוך ענף נקראת "הראש". ענף ברירת המחדל שנוצר באופן אוטומטי בעת אתחול מאגר נקרא ראשי אותבנית בסיס.
- מיזוג: התהליך של שילוב שינויים מענף אחד (או ביצוע) לענף אחר. פעולה זו משלבת שינויים מענף אחד לאחר.
- אובייקט: אחד מתוך ארבעה סוגים של ישויות הזמינות ב- repo. ישויות אלה כוללות Blobs המייצגים קבצים בודדים, עץ המייצג עץ עבודה, ביצוע המייצג גירסה ספציפית של עץ העבודה ותג *, שהוא תווית שהוקצתה לביצוע יחיד.
- Hash: מזהה ייחודי ייחודי שנוצר באופן אוטומטי באורך קבוע המייצג את התוכן של אובייקט. בכל פעם שהאובייקט משתנה, קוד ה- Hash שלו משתנה גם הוא. הדבר מאפשר ל- Git לקבוע איזה תוכן בתוך מאגר עודכן.
- מרוחק: הפניה למאגר אחר (שאינו המאגר המקומי), המצביעה בדרך כלל על המופע המתארח בשירות של המאגר. פעולה זו משמשת כברירת המחדל עבור פעולות דחיפה ומשיכה.
- משיכה: הפעולה שגורמת לשינויים במאגר מרוחק וממזגת אותם לתוך הענף הנוכחי.
- דחיפה: הפעולה ששולחת פריטים מקומיים למאגר מרוחק, מעדכנת אותה עם השינויים שבוצעו באופן מקומי.
- Fetch: הפעולה המאחזרת שינויים ממאגר מרוחק מבלי למזג אותם באופן אוטומטי. הדבר מאפשר סקירה לפני החלת מיזוג.
- בקשת משיכה: תכונה בפלטפורמות אירוח מבוססות Git (כגון GitHub) המאפשרת למפתחים להציע שינויים ולבקשות למזג אותם לענף יעד.
ל- Git יש גם קבוצה נרחבת של פקודות, המספקות את היכולת ליישם ולנהל באופן מלא בקרת גירסאות באמצעות מעטפת פקודה כגון Linux Bash או שורת הפקודה של Windows. לחלופין, באפשרותך לנהל את Git באמצעות אפליקציות שולחן עבודה כגון GitHub Desktop. פלטפורמות אירוח מבוססות Git מספקות ממשק אינטרנט שמקל על אינטראקציה עם מאגרים בצד השירות.
Git לעומת GitHub
כפי שתואר קודם לכן, Git היא דיסק DVD רב-פלטפורמתי עם קוד פתוח שמקל על שיתוף הפעולה באמצעות מאגרים מקומיים, שניתן לסנכרן עם מאגרים מרוחקים. GitHub הוא שירות מבוסס ענן המספק פלטפורמת אירוח למאגרים של Git. הוא מרחיב את טווח היכולות של Git על-ידי הכללת תמיכה עבור:
- מאגרים מרוחקים: מתן אפשרות לאינטראקציה בין צוותים מבוזרים.
- כלי שיתוף פעולה: אספקת תכונות כגון בעיות, דיונים, בקשות משיכה, הודעות, תוויות, פעולות, מזלגות, מאמרי Wiki ופרוייקטים.
- ממשק מבוסס אינטרנט: מזעור הצורך להשתמש בפקודות Git
- הגנה על הסתעפות: אכיפת תנאים שיש לספק לפני שניתן יהיה לבצע מיזוג (לדוגמה, ביקורות של בקשות משיכה שהושלמו).