מושגי יסוד

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

Repository (מאגר)

מאגר Git הוא תיקייה שמכילה את הפרויקט יחד עם תיקיית .git/ נסתרת. תיקיית .git/ היא ה"מוח" של המאגר - היא מכילה את כל ההיסטוריה, ההגדרות, ה-branches וה-commits.

my-project/
├── .git/          ← תיקיית הניהול של git
├── src/
├── index.md
└── package.json

אם תמחק את .git/ - איבדת את כל ההיסטוריה והפרויקט חוזר להיות תיקייה רגילה.

Working Directory (תיקיית העבודה)

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

Staging Area (Index)

אזור ביניים בין תיקיית העבודה לבין ההיסטוריה. כאן אתם "מסמנים" אילו שינויים יכנסו ל-commit הבא. השלב הזה מאפשר לבצע commits מדויקים שמכילים רק את מה שרלוונטי.

Commit

צילום מצב (snapshot) של הפרויקט בנקודת זמן מסוימת. כל commit כולל:

  • כל השינויים מהפעם הקודמת
  • מחבר ותאריך
  • הודעה (message)
  • מזהה SHA-1 ייחודי (לדוגמה: a3f5c2d)
  • הצבעה ל-commit ההורה

Branch

מצביע ל-commit מסוים. כשמוסיפים commit חדש, ה-branch מתקדם איתו. branches מאפשרים פיתוח מקביל - כל פיצ'ר ב-branch משלו, בלי להפריע ל-main.

מצביע מיוחד שמראה איפה אתם נמצאים כרגע - בדרך כלל ה-branch הפעיל וה-commit האחרון בו.

תרשים זרימה: ארבעת המצבים של קובץ

[Working Directory]  →  git add  →  [Staging Area]  →  git commit  →  [Repository]
                                                                            ↓
                                                                       git push
                                                                            ↓
                                                                    [Remote Repository]

Tracked vs Untracked

מצב תיאור
Untracked קובץ חדש ש-git עוד לא יודע על קיומו
Tracked - Unmodified קובץ ש-git מכיר ולא השתנה מאז ה-commit האחרון
Tracked - Modified קובץ ש-git מכיר והשתנה אבל עוד לא ב-staging
Staged קובץ ש-git מכיר, השתנה והוסף ל-staging

דוגמה זרימה מלאה

  1. יצרתם קובץ חדש app.js - הוא Untracked
  2. ביצעת git add app.js - הוא עבר ל-Staged
  3. ביצעת git commit -m "..." - הוא עכשיו Tracked - Unmodified
  4. ערכת אותו - הוא Tracked - Modified
  5. git add app.js - שוב Staged
  6. git commit - וחוזר חלילה

בדקו את עצמכם

נסו לענות לבד לפני שאתם פותחים את התשובה.

  1. מה זה Staging Area?

    1. תיקייה שנמחקה
    2. אזור ביניים: מה שיכנס ל-commit הבא
    3. ענף ראשי
    4. השרת
    הצגת התשובה

    תשובה ב. git add מכניס לשם, git commit שומר את מה שיש שם.

  2. על מה מצביע HEAD?

    1. על המקום הנוכחי: בדרך כלל הענף הפעיל וה-commit האחרון בו
    2. על ה-commit הראשון
    3. על קובץ README
    4. על השרת
    הצגת התשובה

    תשובה א. HEAD הוא "אתם נמצאים כאן".