סנכרון והרבה מאגרים

הבאה, משיכה ודחיפה

משיכה

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

ענף שלא עוקב אחרי כלום

git pull הוא הבאה ואחריה מיזוג, והמיזוג צריך לדעת לתוך מה למזג — ענף המקור של הענף. ענף שיצרתם מקומית, או שנמשך בלי מעקב, פשוט אין לו כזה. ההבאה מצליחה בכל זאת, רשימה ארוכה של רפרנסי origin/* מעודכנים חולפת, ואז git נעצר עם "There is no tracking information for the current branch". שום דבר לא נמשך ושום דבר לא נשבר: לחצי השני פשוט לא היה יעד.

Gitcito קורא את השגיאה ומציע את התיקון ככפתור, ובוחר איזה לפי אם הרימוט כבר מחזיק את הענף:

הוא קיים ברימוט קשר ומשוך — מגדיר את ענף המקור ל־<רימוט>/<ענף> ואז מריץ את המשיכה שביקשתם. ניתן לביטול ב־⌘Z, שמסיר את המעקב שוב.
הוא עדיין לא שם דחוף ענף — דחיפה רגילה, שמגדירה את ענף המקור בדרך.

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

דחיפה

דחיפות כפויות תמיד משתמשות ב־--force-with-lease — הווריאנט הבטוח שמסרב אם הרימוט זז מאז שהסתכלתם לאחרונה. דחיפה כפויה של ענף מוגן מבקשת אישור (הרשימה בגלגל הגדרות המאגר).

האישור שענף מוגן דורש לפני דחיפה כפויה

אין רימוטים

דחיפה, משיכה והבאה צריכות יעד. מאגר בלי אף אחד — git init טרי, שכפול שהסירו ממנו origin — גרם לכפתורים האלה לא לעשות כלום, או שמנה הבאה ריקה כהצלחה. עכשיו הם פותחים הוספת רימוט, עם אזהרה, כדי להדביק כתובת או ליצור את המאגר אצל המארח. ההוספה מסיימת את הפעולה שהתחלתם: דחיפה מפרסמת את הענף הנוכחי, משיכה מביאה ואז מושכת, הבאה רק מביאה.

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

יותר מרימוט אחד

כפתור דחיפה מכוון אל ה־upstream של הענף. החץ שלידו מציע גם, ברגע שלמאגר יש יותר מרימוט אחד:

דחיפה לרימוט אחד בחרו רימוט יחיד — פורק, מראה, יעד פריסה
דחיפה לכל N הרימוטים דחיפה אחת לכל רימוט, לפי הסדר
דחיפת כל התגיות אל git push <remote> --tags, כל תגית מקומית בבת אחת

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

דחייה אינה מבטלת את השאר. דחיפה לפורק ול־upstream שלו היא בדיוק המקרה שבו צד אחד מסרב והשני עדיין צריך לעבור, ולכן כל רימוט מדווח בנפרד: ההצלחות נקובות בשמן בהודעה אחת, וכל כישלון מקבל הודעה משלו עם הסיבה של git.

רק הרימוט הראשון ברשימה קובע את ה־upstream של הענף. לענף יש upstream אחד, והרימוט האחרון שדחפתם אליו אינו אוטומטית זה שאתם רוצים שהוא יעקוב אחריו.

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

ענפים שאתם לא עליהם

git pull מזיז רק את HEAD, ולכן רוב הלקוחות מחייבים צ׳קאאוט לענף לפני שאפשר לעדכן אותו. Gitcito לא: לחיצה ימנית על כל ענף מקומי — בסרגל הצד או על התג שלו בגרף — נותנת משיכת <ענף> ודחיפת <ענף>, ושתיהן פועלות על אותו ענף ולא על הענף המצ׳וקאאט.

משיכת <ענף> מקדמת את הרפרנס המקומי אל ה-upstream שלו בקידום מהיר, בלי צ׳קאאוט. עץ העבודה לא נוגע. ניתן לביטול ב-⌘Z — הביטול מחזיר את הענף למקומו.
דחיפת <ענף> דחיפה רגילה של אותו ענף, עם אותן הגנות ענף מוגן ושמירת סודות כמו הכפתור בסרגל.

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

המגבלה שכדאי להכיר: ענף שהתפצל מה-upstream שלו נדחה, עם הודעה שאומרת זאת. יישוב התפצלות הוא מיזוג או ריבייס, ולשניהם דרוש עץ עבודה — כך שהמקרה הזה עדיין עולה לכם צ׳קאאוט. דחיפה בכוח של ענף שאתם לא עליו מוצעת כשהמרוחק דוחה את הדחיפה; המסלול של "משוך ונסה שוב" לא, מאותה סיבה.

הבאה

להבאה יש כפתור משלה בסרגל הכלים, לצד משיכה. היא מביאה מכל הרימוטים וגוזמת, כך שרפרנסי ה־origin/* וכל מוני הקדימה/פיגור מתעדכנים — ובלי לגעת לא בענף שלכם ולא בעץ העבודה. זה הכפתור כשרוצים לראות מה כולם עשו בלי להזיז את העבודה שלכם.

יש גם הבאה אוטומטית ברקע במרווח שתגדירו (הגדרות ← כללי). רחפו מעל כפתור ההבאה והגיל יופיע מתחתיו — לפני 4 דק׳ — בענבר אם ההבאה עברה חמש עשרה דקות. הוא לא תופס מקום בסרגל הכלים אף פעם, כי הוא עונה על שאלה שנשאלת רק תוך כדי הושטת יד לכפתור. הוא נקרא מ־FETCH_HEAD, כך ש־git fetch שהורץ בטרמינל נחשב בדיוק כמו אחד שהורץ כאן.

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

הרבה מאגרים בבת אחת

  • לשונית קבוצה יכולה לבצע הבאה להכול / משיכה להכול לכל תת־העץ שלה.
  • חדר הבקרה עושה זאת בכל סביבת העבודה, ויכול למשוך רק את המאגרים שבאמת מפגרים.

רימוטים

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

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

ראו גם: חדר הבקרה · אירוח ובקשות משיכה

שיפור התרגום הזה ב־GitHub