Git Push
עודכן לאחרונה
git push מעלה את הקומיטים שבענף המקומי שלכם לענף המקביל במאגר המרוחק (כמו GitHub). אחרי שלענף הוגדר upstream, git push פשוט מספיק; בדחיפה הראשונה של ענף חדש משתמשים ב--u כדי ליצור את הענף המרוחק ולהגדיר מעקב, כך ש-push ו-pull בהמשך לא יצטרכו ארגומנטים.
נסו את הפקודות האלה בעורך הטרמינל אונליין: shell אמיתי בדפדפן, בלי להתקין כלום.
תחביר
| פקודה | מה היא עושה |
|---|---|
git push | דחיפת הענף הנוכחי ל-upstream שלו |
git push -u origin feature | דחיפת ענף חדש והגדרת upstream |
git push origin main | דחיפה למאגר מרוחק ולענף מסוימים |
git push --tags | דחיפת כל התגיות המקומיות |
git push --force-with-lease | force push בטוח אחרי rebase |
מקרים נפוצים
| מטרה | פקודה |
|---|---|
| דחיפת ענף חדש לגמרי | git push -u origin feature |
| דחיפה אחרי שה-upstream הוגדר | git push |
| דחיפת תגית אחת | git push origin v1.0.0 |
| מחיקת ענף מרוחק | git push origin --delete feature |
דוגמה מלאה
| שלב | פקודה | תוצאה |
|---|---|---|
| 1 | git remote add origin <url> | מחבר את המאגר המקומי למאגר המרוחק תחת השם origin |
| 2 | git push -u origin main | יוצר את main במאגר המרוחק ומגדיר אותו כ-upstream של main המקומי |
| 3 | git push | כל דחיפה מאוחרת יותר ב-main לא צריכה ארגומנטים |
שאלות נפוצות על git push
מה git push עושה?
הוא שולח את הקומיטים שיש בענף המקומי וחסרים בענף המרוחק, ואז מזיז את הענף המרוחק כך שיתאים. הוא מעלה קומיטים בלבד: שינויים שלא נשמרו בקומיט נשארים במחשב שלכם, אז צרו קומיט קודם. אם במאגר המרוחק יש קומיטים שאין לכם, הדחיפה נדחית עד שתריצו pull או rebase.
איך דוחפים ענף חדש למאגר המרוחק?
הריצו
git push -u origin <branch>. ה--u (קיצור של --set-upstream) יוצר את הענף במאגר המרוחק ומקשר אליו את הענף המקומי, כך שאחר כך git push ו-git pull פשוטים עובדים בלי ארגומנטים. הענף המרוחק לא קיים עד הדחיפה הראשונה הזו.למה git push אומר 'no upstream branch'?
הענף המקומי שלכם עדיין לא מקושר לענף מרוחק. דחפו אותו עם
git push -u origin <branch> כדי ליצור את הענף המרוחק ולהגדיר את ה-upstream. אחרי זה, git push לבדו יודע לאן לשלוח את הקומיטים.איך דוחפים תגיות?
תגיות לא נדחפות כברירת מחדל. דחפו תגית אחת עם
git push origin <tagname>, או את כולן בבת אחת עם git push --tags. זו מלכודת נפוצה: תגית שיצרתם מקומית לא תופיע במאגר המרוחק עד שתדחפו אותה במפורש.איך עושים force push בבטחה?
אחרי שכתוב היסטוריה (rebase או amend), השתמשו ב-
git push --force-with-lease ולא ב---force. הוא דורס את הענף המרוחק רק אם אף אחד אחר לא דחף מאז ה-fetch האחרון שלכם, וכך מגן על העבודה של חברי הצוות. הסבר מלא בעמוד על git force push.מה המשמעות של git push -u origin main?
origin הוא המאגר המרוחק (ראו git remote), main הוא הענף, ו--u מגדיר את הענף המרוחק הזה כ-upstream של main המקומי. זו הפקודה ש-GitHub מציג למאגר חדש: אחרי שהיא רצה פעם אחת, git push ו-git pull ב-main לא צריכים ארגומנטים.מה ההבדל בין git push לבין git pull?
הם מעבירים קומיטים בכיוונים הפוכים.
git push מעלה את הקומיטים המקומיים שלכם למאגר המרוחק; git pull מוריד את הקומיטים החדשים מהמאגר המרוחק וממזג אותם לענף שלכם. דחיפה שנדחתה כ-non-fast-forward בדרך כלל אומרת שצריך להריץ pull קודם. ראו git fetch vs pull כדי להבין מה pull עושה מאחורי הקלעים.אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ
git push ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד עבודה עם מאגרים מרוחקים צעד אחר צעד.