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

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

מה המשמעות של איפוס קובץ, בכל מקרה?

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

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

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

instagram viewer

ראה גם: מדריך Git מתקדם

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

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

כיצד אוכל להחזיר לאחור קובץ שהוגדר בעבר?

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

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

הצורה השימושית ביותר לשימוש כללי של פקודה זו היא:

git checkout [מזהה התחייבות] -- נתיב/אל/קובץ

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

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

ראה גם: כיצד לבדוק את ההיסטוריה של פרויקט עם יומן git

איך אני משנה את מה שאני מביים?

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

אתה יכול להשתמש ב איפוס git פקודה לביטול הבמה של קובץ מבוים:

git reset HEAD path/to/file

האם אוכל לבטל במהירות שינויים מקומיים?

כן, אתה יכול לבטל שינויים בקובץ מקומי לפני שהוא מבוים. השתמש בפקודה הבאה:

git checkout -- נתיב/אל/קובץ

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

מה לגבי git restore?

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

git restore --source [commit id] path/to/file

כדי לבטל את הבמה של קובץ השתמש:

git restore -- staged path/to/file

וכדי לבטל שינויים בעותק עבודה:

git restore path/to/file

שליטה בכוח הגירסה של Git הוא בעל ערך רב

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

כיצד להסיר קובץ מ-Commit ב-Git

השתמש בפקודות Git אלה כדי לבצע פעולות כמו הסרת קובץ מ-commit.

קרא הבא

לַחֲלוֹקצִיוּץאימייל
נושאים קשורים
  • תִכנוּת
  • GitHub
  • בניית אתרים
  • תִכנוּת
על הסופר
בובי ג'ק (63 מאמרים שפורסמו)

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

עוד מבובי ג'ק

הירשם לניוזלטר שלנו

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

לחץ כאן כדי להירשם