שאלת הבנה בנוגע ל-status ו-checkout

תגיות:

מה קורה לגבי קבצים שעברו עריכה ולא נוספו בadd וקבצים או ספריות שנמחקו?
הם יופיעו ב Changes to be commited וב־Changes not staged for commit גם אחרי commit.

אין צורך לתמוך במחיקת קבצים (אבל אפשר אם מאוד בא לך).

בנוגע לעברו עריכה ולא נוספו ב־add – הם יופיעו ב־Changes not staged for commit.
צריך לעשות להם add לפני, אחרת ה־checkout יכשל.

לייק 1

ב Changes to be commited לא יופיעו גם הקבצים שעברו עריכה אחרי ההוספה?

אם לא מתבצעת המחיקה, במידה ומחקו קובץ או תיקייה הם תמיד יישארו ב Changes not staged for commit ולא יהיה ניתן לעשות checkout.
או שפספסתי משהו.

עניינת אותי מאוד

עדיין לא מצאתי דרך יפה שלא משתמשת ברקורסיה ומתחשבת בכל התיקיות הפנימיות :roll_eyes:

הם כן, אבל רק אם עשו להם add, לא עשו commit, ערכו, ואז לא עשו add ולא commit.

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

סבבה. ראיתי את התגובה שלך בשאלה אחרת וממשתי לפי זה.

שאלת הבנה בנוגע לchanges not staged for commit:

מתחת לכותרת הזו בעצם יופיעו שמות הקבצים שעשו להם add לstaging_area , ולאחר הadd הקבצים הללו שונו בתיקייה המקורית? (שממנה מעתיקים).

“אבל התוכן שלהם שֻׁנָּה מאז ה־commit האחרון ומאז שהתוכן שלהם שֻׁנָּה לא עשו להם add.”
בעצם פעולת הcommit לא ממש קשורה לכותרת הנ"ל אם הבנתי נכון לכותרת הזאת:
סה"כ תחת הכותרת הזו יופיעו שמות הקבצים שהשתנו אבל בcommit הבא שינויים אלו לא יגיעו לתיקיית images בגלל שעדיין לא נעשה add עליהם. (השינויים עליהם בתיקייה המקורית נעשו לאחר שעשו add).

כן

נכון, הם לא הוספו מחדש ל־index. הקבצים האלו ישמרו ב־image הבא, אבל לא בגרסה העדכנית שלהם.
(אלא בגרסה הישנה שנשארה ב־staging_area מ־add קודם)

לייק 1

מקווה שלא פספסתי את זה באחד השרשורים -

לגבי changes not staged for commit, האם הרשימה צריכה לכלול גם תיקיות שתכולתן השתנתה או רק קבצים שתוכנם השתנה?

רק קבצים :slight_smile:

לייק 1

קצת הקשיתי על עצמי פה וכללתי גם תיקיות בchanges not staged for commit ובuntracked_files, בגלל מקרים של תיקיות ריקות ללא קבצים… האם בסדר להשאיר כבר כך?
:sweat_smile:

כן, אין בעיה :slight_smile:

לגבי checkout ו-Untracked files - האם זה הגיוני שבמימוש שלי של checkout לא באמת צריך ללכת לבדוק מה יש תחת רשימת הקבצים הזו (כלומר תכלס לא צריך להשתמש ב-status ולקחת ממנו את הרשימה), מכיוון שהפעולה פשוט “לא נוגעת” בקבצים בתיקיה המקורית שלא נמצאים ב-committed_id? או שאני מפספסת משהו?

מה אם בתיקייה המקורית הקבצים שונו ואת דורסת אותם?

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

במקרה הזה באיזה תרחיש אני דורסת קבצים ששונו? אם קובץ שונה ולא הועלה בגרסה העדכנית ל-staging area או שלא בוצעה לאחר מכן הפעולה comit, הפעולה checkout בכלל לא אמורה לרוץ - לא?

נכון, זו בדיוק הנקודה – היא אמורה לא לרוץ כדי למנוע מצב לא נעים של איבוד מידע.
השימוש ב־status הוא כדי להבין מתי היא אמורה לא לרוץ :slight_smile:

לייק 1

אז מוודאת שהבנתי סופית - untracked file לא קשור לנושא של קבצים ששונו\חשש לדריסה. פשוט צריך לא לגעת בהם.
תודה רבה!

לייק 1

יאפ, בדיוק :slight_smile:

לייק 1

בטעות שיניתי את commit (במסגרת checkout) לפני שהגשתי את הגרסה הקודמת שלה… תסלחו לי בהגשה? :sweat_smile:

ברור, שטויות :slight_smile: