Git Fetch vs Pull
עודכן לאחרונה
git fetch מוריד את הקומיטים האחרונים מהמאגר המרוחק אבל משאיר את ענף העבודה שלכם בדיוק כפי שהיה. git pull מבצע את אותה הורדה ואז ממזג מיד את הקומיטים האלה לענף הנוכחי. בקיצור: git pull = git fetch + git merge.
השתמשו ב-fetch כשרוצים להסתכל לפני שקופצים; ב-pull כשמוכנים לשלב. נסו את שתיהן בעורך הטרמינל אונליין: shell אמיתי בדפדפן.
זו לצד זו
| התנהגות | git fetch | git pull |
|---|---|---|
| מוריד קומיטים מרוחקים | כן | כן |
| משנה את הענף הנוכחי | לא | כן |
| יכול לגרום לקונפליקטים במיזוג | לא | כן |
| שקול ל | הורדה בלבד | fetch + merge |
תחביר
| פקודה | מה היא עושה |
|---|---|
git fetch | הורדת כל השינויים המרוחקים, בלי מיזוג |
git fetch origin main | הורדת ענף אחד בלבד ממאגר מרוחק |
git pull | הורדה ומיזוג לענף הנוכחי |
git pull --rebase | הורדה, ואז rebase של הקומיטים שלכם מעל |
git log HEAD..origin/main | אחרי fetch: לראות מה עומד להתמזג |
שאלות נפוצות על git fetch מול pull
מה ההבדל בין git fetch לבין git pull?
git fetch מוריד קומיטים חדשים ומעדכן את ענפי המעקב המרוחקים (כמו origin/main), אבל לא משנה את ענף העבודה שלכם. git pull מבצע את אותו fetch ואז ממזג את הקומיטים החדשים לענף הנוכחי. כלומר pull משנה את הקבצים שלכם; fetch רק מעדכן את הידע שלכם על המאגר המרוחק.האם git pull הוא פשוט fetch ועוד merge?
מתי כדאי להשתמש ב-fetch במקום ב-pull?
השתמשו ב-
git fetch כשרוצים לבדוק את השינויים הנכנסים לפני שמשלבים אותם: למשל git fetch ואז git log HEAD..origin/main כדי לראות בדיוק מה חדש. השתמשו ב-git pull כשאתם כבר סומכים על השינויים המרוחקים ופשוט רוצים למזג אותם לענף שלכם.האם git fetch יכול לגרום לקונפליקטים?
לא. fetch רק מעדכן ענפי מעקב מרוחקים; הוא אף פעם לא נוגע בענף העבודה או בקבצים שלכם, ולכן לא יכול ליצור קונפליקטים במיזוג. קונפליקטים נוצרים רק בשלב המיזוג, ש-pull מבצע אוטומטית ו-fetch לא.
אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ
git fetch ו-git pull ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד עבודה עם מאגרים מרוחקים צעד אחר צעד.