status, add, commit

שלוש הפקודות המרכזיות במחזור החיים היומיומי של עבודה עם git.

git status

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

git status              # תצוגה מפורטת
git status -s           # תצוגה קצרה (short)
git status -b           # כולל מידע על ה-branch

מה מציג git status?

  • ה-branch הנוכחי
  • קבצים שהשתנו אבל לא ב-staging (Modified)
  • קבצים ב-staging מוכנים ל-commit (Staged)
  • קבצים חדשים שלא מנוטרים (Untracked)

תצוגה קצרה - git status -s

 M src/app.js       ← קובץ שונה אבל לא ב-staging
M  src/utils.js     ← קובץ ב-staging
A  src/new.js       ← קובץ חדש שהוסף ל-staging
?? src/temp.js      ← קובץ חדש שלא מנוטר

git add

מוסיף קבצים ל-staging area - מסמן אותם להיכלל ב-commit הבא.

git add file.js              # קובץ ספציפי
git add file1.js file2.js    # מספר קבצים
git add .                    # כל הקבצים בתיקייה הנוכחית ומתחתיה
git add -A                   # כל השינויים בכל המאגר
git add *.js                 # לפי תבנית (pattern)
git add src/                 # תיקייה שלמה
git add -p                   # אינטראקטיבי - בוחר חתיכות מקובץ

-p (patch mode) - הוספה אינטראקטיבית

הדגל -p מאפשר להוסיף רק חלקים מקובץ. שימושי במיוחד כשעבדת על שני שינויים בקובץ אחד ורוצה להפריד אותם ל-2 commits נפרדים.

git commit

יוצר commit חדש מתוך הקבצים שנמצאים ב-staging.

git commit -m "Add login form"           # commit עם הודעה
git commit                                # פותח עורך לכתיבת הודעה ארוכה
git commit -am "Fix typo in header"      # add + commit לכל הקבצים tracked
git commit --amend                        # עריכת ה-commit האחרון
git commit --amend --no-edit              # הוספה ל-commit האחרון בלי לשנות הודעה

הודעות commit טובות

  • כותבים בזמן ציווי (Imperative): Add login form, לא Added login form
  • כותרת קצרה (עד 50 תווים), אם צריך - שורה ריקה ואז תיאור מפורט
  • מתארים למה השינוי, לא רק מה השתנה
  • אנגלית (קונבנציה רווחת בעולם הקוד הפתוח)

דוגמאות טובות: - Fix EditAbout save flow: validate before API calls - Extract useIsMentor hook and replace duplicated logic - Stabilize DojoHomeScreen layout by memoizing photos

דוגמאות רעות: - update - fixed bug - changes

הסרת קבצים

git rm file.js              # מחיקה מהדיסק + staging
git rm --cached file.js     # הסרה מ-git, השארה בדיסק
git rm -r folder/           # מחיקת תיקייה רקורסיבית

--cached שימושי כשהוספת בטעות קובץ שאמור להיות ב-.gitignore (כמו .env).

שינוי שם / העברת קבצים

git mv old-name.js new-name.js
git mv src/file.js lib/file.js

זה שווה ערך ל:

mv old-name.js new-name.js
git add new-name.js
git rm old-name.js

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

# 1. בודקים מה השתנה
git status

# 2. רואים שיש 3 קבצים שהשתנו
# 3. מוסיפים רק 2 מהם ל-staging
git add src/login.js src/styles.css

# 4. בודקים שוב
git status

# 5. עושים commit
git commit -m "Add login form with basic styling"

# 6. הקובץ השלישי עוד מחכה - ממשיכים לעבוד עליו

בדקו את עצמכם

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

  1. מה הסדר הנכון לשמירת שינוי?

    1. add ואז commit
    2. commit בלבד
    3. commit ואז add
    4. push ואז add
    הצגת התשובה

    תשובה א. קודם מסמנים מה נכנס (add), ואז שומרים (commit).

  2. מה עושה git status?

    1. מציג אילו קבצים השתנו, מה ב-staging ומה לא במעקב
    2. שומר
    3. מוחק
    4. שולח לשרת
    הצגת התשובה

    תשובה א. הפקודה הכי שימושית כדי לדעת איפה אתם.