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. הקובץ השלישי עוד מחכה - ממשיכים לעבוד עליו
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה הסדר הנכון לשמירת שינוי?
הצגת התשובה
תשובה א. קודם מסמנים מה נכנס (add), ואז שומרים (commit).
-
מה עושה
git status?הצגת התשובה
תשובה א. הפקודה הכי שימושית כדי לדעת איפה אתם.