לדלג לתוכן

מדריך לפקודות גיט הכי חשובות

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

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

הפקודה שתריצו הכי הרבה - status

git status

זו הפקודה שאתם צריכים להריץ כל הזמן, וכמעט אף פעם לא בטעות. היא מראה לכם בדיוק מה מצב הפרויקט עכשיו - אילו קבצים שיניתם, אילו כבר מסומנים לשמירה, ואילו בכלל לא מוכרים לגיט. כלל אצבע טוב - לפני כל commit, תריצו status ותוודאו שאתם באמת מבינים מה עומד להישמר.

לראות מה בדיוק השתנה - diff

git diff

status מספר לכם אילו קבצים שונו. diff מראה לכם בדיוק אילו שורות. זו הפקודה שמצילה אתכם מלגלות אחרי commit שהשארתם בטעות שורת דיבוג באמצע הקוד. תרגילו להריץ diff לפני add - זה לוקח חמש שניות ומונע לא מעט מבוכה.

לבחור מה נכנס - add

git add file.py       # קובץ ספציפי
git add .              # הכל
git add -p             # לבחור חלקים מתוך קבצים

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

לשמור תמונת מצב - commit

git commit -m "הוספתי ולידציה לטופס ההרשמה"

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

לראות היסטוריה בצורה שאפשר לקרוא - log

git log --oneline --graph

הפקודה הרגילה git log מציגה כל commit בפירוט מלא ומציפה אתכם במידע. הגרסה עם --oneline --graph דוחסת הכל לשורה אחת לכל commit ומראה ויזואלית איך ה-branches נפגשים. זו הפקודה שתשתמשו בה כדי להבין "מה בעצם קרה כאן".

לעצור באמצע בלי לאבד עבודה - stash

git stash
git stash pop

תרחיש נפוץ - אתם באמצע שינוי, ופתאום צריך לעבור branch אחר כדי לתקן משהו דחוף. אבל הקוד שלכם עוד לא מוכן ל-commit. stash שם את השינויים בצד זמנית בלי לשמור אותם רשמית, כדי שתוכלו לחזור אליהם מאוחר יותר עם stash pop. זה כמו מגירה זמנית לעבודה באמצע.

revert מול reset - שני כלים שנראים דומים ולא

git revert <commit-id>   # מבטל commit בצורה בטוחה, עם commit חדש
git reset <commit-id>    # מוחק commits מההיסטוריה

זה ההבדל הכי חשוב שכדאי להפנים. revert יוצר commit חדש שמבטל שינוי קודם, כך שההיסטוריה נשארת שלמה ואמינה. reset בפועל מוחק commits, מה שמסוכן במיוחד אם כבר שיתפתם אותם עם אחרים. הכלל הפשוט - ב-branch משותף תמיד revert, ב-branch פרטי משלכם אפשר reset.

לעבוד עם שרת מרוחק - remote, push, pull

git remote -v          # מראה לאילו שרתים הפרויקט מחובר
git push               # שולח commits לשרת
git pull               # מוריד ומשלב שינויים מהשרת

git pull הוא בעצם שילוב של שתי פעולות - הורדת השינויים והשלבה שלהם עם הקוד המקומי שלכם. הרגל טוב הוא להריץ pull לפני שמתחילים לעבוד כל יום, כדי לוודא שאתם מתחילים מהגרסה העדכנית ולא יוצרים לעצמכם קונפליקטים מיותרים.

מי שרוצה להעמיק ולהבין את כל התהליך הזה בהקשר של פרויקט תכנות אמיתי, מוזמן להתחיל מהבסיס.

התחילו את קורס התכנות הבסיסי כאן

איך זוכרים את כל זה

לא צריך. אף מתכנת לא זוכר כל פקודה בעל פה. מה שכן קורה עם הזמן הוא שהפקודות היומיומיות - status, add, commit, push, pull - הופכות לרפלקס, והשאר נשארות בגוגל עד שתצטרכו אותן. זה בסדר גמור, וזה בדיוק איך גם מתכנתים מנוסים עובדים.

לסיכום

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

יש קונפליקט או פקודה שלא הצליחה לכם? זה קורה לכולם. בדיסקורד יש אנשים שישמחו לעזור לפענח מה קרה.

הצטרפו לקהילה בדיסקורד