קורס Git Hero שיעור יצירת ענף אחרי קומיט


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/git/lessons/branch-after-commit

אפשר לפתור את זה גם בצורה הבאה:

git reset HEAD^ soft
git branch fix-bug
git checkout fix-bug
git commit -am 'fix bug commit'

אני צודק?

כן אבל-

הפיתרון שלי נשאר עם הקומיטים הקיימים ורק הזיז את הבראנצ’ים.
בפיתרון שלך אתה זרקת את הקומיט האחרון ואז יצרת קומיט חדש במקומו זהה לו.

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

אנסה להמחיש באיור קטן. נניח שהעולם שלנו (עם הבעיה) נראה כך (אות גדולה מייצגת קומי):

A <- B <- C <-D (master)

יש ארבעה קומיטים כולם על בראנץ מאסטר.

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

A <- B <- C (master) <- E (fix-bug)

מה שאני מציע זה להשאיר את D ופשוט להזיז את הבראנצים כלומר לקבל:

A <- B <- C (master) <- D (bug-fix)

בצורה כזאת אם מישהו כבר התבסס על D למשהו אחר כל הענף שלו ימשיך להיות וולידי.

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

אני כותב על זה בהרחבה גם כאן ומומלץ לקרוא:

לייק 1