גרף ההיסטוריה: parent, hash וה-DAG
בשיעור הקודם ראינו שכל commit הוא צילום מצב (snapshot) — תמונה מלאה של הפרויקט. עכשיו נשאל: איך התמונות האלה מחוברות זו לזו? כל commit נושא 'פתק' קטן שמצביע אל ה-commit שבא לפניו — ה-parent. שרשור הפתקים האלה יוצר גרף שזורם בכיוון אחד, מהעבר אל ההווה, שנקרא DAG. ולכל תמונה יש 'טביעת אצבע' ייחודית —
כל תמונה (commit) נושאת פתק: 'באתי מיד אחרי התמונה ההיא'. הפתקים האלה משרשרים את התמונות למפה בכיוון אחד. ולכל תמונה יש טביעת אצבע ייחודית — תשנה משהו, וטביעת האצבע משתנה.
- parent (הורה)
- המצביע מ-commit אל ה-commit שקדם לו. השרשור של מצביעי parent הוא מה שיוצר את ההיסטוריה.
- DAG (גרף מכוון חסר מעגלים)
- הצורה של היסטוריית Git: כל commit מצביע אחורה אל ה-parent שלו, והשרשור הזה יוצר גרף שזורם בכיוון אחד, בלי מעגלים.
- hash (מזהה SHA)
- טביעת אצבע ייחודית באורך קבוע שנגזרת מתוכן ה-commit (כולל ה-parent). שנֵה אפילו תו אחד — וה-hash משתנה.
- commit שורש (root)
- ה-commit הראשון במאגר. הוא היחיד שאין לו parent — נקודת ההתחלה של הגרף.
- מטא-דאטה (metadata)
- המידע הנלווה ל-commit: מי כתב, מתי, וההודעה (commit message). גם הוא נכנס לחישוב ה-hash.