יום 2 תרגיל 3 checkout

תגיות:

עדכון ה־master בעת פקודת commit

אם התבצע commit וה־commit id שאליו מצביע HEAD הוא אותו commit id שאליו מצביע master (לפי references.txt), יש לעדכן את שניהם ל־commit_id החדש.
אם התבצע checkout שהעביר את ה־HEAD כך שהוא לא מצביע לאותו commit id שאליו מצביע ה־master, ה־commit id שאליו מצביע master לא ישתנה.

לא כל כך הבנתי מה אמורים לרשום בעת הפעולה commit אם התנאי שצויין לא נכון? לשנות רק את הhead או לשנות רק את הmaster?

וכנ"ל בcheckout, אם התנאי המצויין לא נכון, לשנות את שניהם?

הפקודה commit תמיד מעבירה את ה־HEAD ל־image החדש שנוצר.
כנ"ל checkout.

ביום 2, הפקודה commit תעביר את master ל־HEAD אם כשביצעת commit ה־master וה־HEAD הצביעו לאותו מקום.

כלומר - ברגע שעושים CHECKOUT פעם אחת, הMASTER נתקע ולא משתנה?
הבנתי נכון?
(ביחס לפקודות שיש עד סוף יום 2)

בוא נגיד שזה המצב המקורי לפני ה-checkout:

HEAD=333333
master=333333

כרגע הם מצביעים על אותו ה-commit.
אם יהיה עוד שינוי ויבוצע עוד commit, שניהם יצביעו על ה-commit החדש, כלומר:

HEAD=444444
master=444444

אבל, אם עכשיו יבוצע checkout ל-111111, כלומר, ערך ששונה ממה ש-master מצביע עליו כרגע (444444), הערך של master לא ישתנה, וזה יהיה המצב החדש:

HEAD=111111
master=444444

ועל כן ב-commit הבא, master לא ישתנה עם ה-HEAD כי הם אינם מצביעים על אותו ה-commit יותר.

HEAD=555555
master=444444

לעומת זאת, אם עכשיו יבוצע checkout ל-master או ל-444444 (הערך עליו מצביע master), המצב החדש יהיה:

HEAD=444444
master=444444

וכעת כששניהם מצביעים על אותו ערך, כשיבוצע עוד commit זה יראה ככה:

HEAD=666666
master=666666
5 לייקים

2 פוסטים פוצלו לנושא חדש: למה ב־checkout מעדכנים גם את staging area?

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

למה? ה־staging area אמור להיות מועתק מהתיקייה של ה־commit id, וכך גם תיקיית העבודה.

ה־status אמור להיות ריק

כן, זה חייב להתאפשר.