Menu
Coddy logo textTech

Git Rebase

עודכן לאחרונה

git rebase מעביר את הקומיטים של הענף שלכם כך שירוצו מחדש מעל ענף אחר, ויוצר היסטוריה ישרה וליניארית במקום קומיט מיזוג. rebase אינטראקטיבי (-i) הולך רחוק יותר ומאפשר לאחד, לסדר מחדש, לערוך או להשמיט קומיטים. מכיוון ש-rebase משכתב קומיטים, עשו אותו רק לעבודה שעוד לא שיתפתם.

נסו את הפקודות האלה בעורך הטרמינל אונליין: shell אמיתי בדפדפן, בלי להתקין כלום.

git rebase משחזר את הקומיטים של הענף שלכם מעל main כעותקים חדשים ומשאיר היסטוריה ישרה ולינארית.

תחביר

פקודהמה היא עושה
git rebase mainהרצה מחדש של הקומיטים שלכם מעל main
git rebase -i HEAD~3עריכה אינטראקטיבית של 3 הקומיטים האחרונים
git rebase --onto main old newהעברת טווח קומיטים אל main
git rebase --continueהמשך אחרי פתרון קונפליקטים
git rebase --abortביטול ה-rebase ושחזור הענף
git pull --rebasepull עם rebase במקום מיזוג

מילות מפתח ב-rebase אינטראקטיבי

בעורך ש--i פותח, שנו את pick לאחת מאלה.

מילת מפתחמה היא עושה
pickהשארת הקומיט
rewordהשארת הקומיט ועריכת ההודעה שלו
squashאיחוד לקומיט הקודם ושילוב ההודעות
fixupאיחוד לקומיט הקודם וזריקת ההודעה הזו
dropהסרת הקומיט לגמרי

שאלות נפוצות על git rebase

מה git rebase עושה?
הוא לוקח את הקומיטים בענף הנוכחי ומריץ אותם מחדש, אחד אחד, מעל ענף אחר, כאילו התחלתם את העבודה מהקומיט האחרון של אותו ענף. התוצאה היא היסטוריה ליניארית בלי קומיט מיזוג. בתהליך הקומיטים נכתבים מחדש (ומקבלים hash חדש).
מה זה rebase אינטראקטיבי?
git rebase -i <base> פותח עורך עם רשימת הקומיטים מאז <base>, ושם אפשר לסדר אותם מחדש, לאחד כמה לאחד עם squash, לנסח הודעות מחדש עם reword, לערוך קומיט עם edit או להשמיט אותו עם drop. זה הכלי העיקרי לסידור סדרת קומיטים מבולגנת לפני שמשתפים אותה.
מהו כלל הזהב של rebase?
לעולם אל תעשו rebase לקומיטים שאחרים כבר ביססו עליהם עבודה, בדרך כלל כל דבר שנדחף לענף משותף. מכיוון ש-rebase משכתב קומיטים, זה מאלץ את כל השאר ליישב היסטוריה שהתפצלה. עשו rebase בחופשיות לקומיטים מקומיים שלא נדחפו; לקומיטים ציבוריים השתמשו ב-merge או ב-revert.
איך מתקנים או מבטלים rebase עם קונפליקטים?
כש-rebase נעצר על קונפליקט, פתרו את הקבצים, הריצו עליהם git add, ואז git rebase --continue. השתמשו ב-git rebase --skip כדי להשמיט את הקומיט הנוכחי, או ב-git rebase --abort כדי לבטל לגמרי ולהחזיר את הענף למצב שלפני תחילת ה-rebase.
אפשר לתרגל את זה אונליין?
כן. פתחו את עורך הטרמינל אונליין כדי להריץ git rebase ב-shell אמיתי בדפדפן, בלי להתקין כלום. גם קורס ה-Git האינטראקטיבי והחינמי של Coddy מלמד rebase צעד אחר צעד.
איור של שפות התכנות ב-Coddy

ללמוד Git עם Coddy

להתחיל