מה ההבדל בין איפוס git -מעורב, -רך ו-קשה?

Mh Hhbdl Byn Ypws Git M Wrb Rk W Qsh



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

מאמר זה יסביר בקצרה את ההבדל בין git reset -hard, -soft ו-mixed.

מה ההבדל בין איפוס git -מעורב, -רך ו-קשה?

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







  • ה ' -רַך ' אפשרות המשמשת עם ' $ git איפוס ” הפקודה לשמור את הקבצים ולהחזיר את השינויים ב-commit לאינדקס ה-Git.
  • ' $ git reset -mixed ' משמש לביטול השינויים ב-commit ולהסיר את הקובץ מאינדקס ה-Staging מבלי למחוק אותו מספריית העבודה.
  • ה ' -קָשֶׁה ' אפשרות עם ' $ git איפוס הפקודה ” משמשת למחיקת כל השינויים ולהסרתם מספריית העבודה המקומית.

בואו ניקח דוגמה כדי לראות כיצד ' $ git איפוס הפקודה פועלת עם אפשרויות שונות!



שלב 1: עבור אל מאגר Git מבוקש

ראשית, עבור למאגר Git הרצוי על ידי שימוש ב-' CD ' פקודה:



$ CD 'C:\Go \t is_repo'





שלב 2: צור קובץ

כעת, בצע את הפקודה הנתונה להלן כדי ליצור קובץ:

$ לגעת File4.txt



שלב 3: הוסף קובץ ל-Staging Index

להשתמש ב ' git להוסיף ' הפקודה כדי להוסיף את הקובץ החדש שנוצר לאינדקס הבימוי:

$ git להוסיף File4.txt

שלב 4: בצע שינויים

לאחר מכן, הוסף את כל השינויים למאגר העבודה על ידי ביצוע ' git commit ' פקודה:

$ git commit -M 'קובץ 4 נוסף'

שלב 5: בדוק Git Log

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

$ git log

בפלט למטה, ניתן לראות שכל ההתחייבויות האחרונות שנוספו מוצגות, וה-' רֹאשׁ ' מצביע על ההתחייבות האחרונה:

פתק: כדי לבדוק את מיקום ההצבעה הנוכחי של ה-HEAD בצורה טובה יותר, בצע את ' git log הפקודה יחד עם הפקודה ' -שורה אחת 'דגל:

$ git log --באינטרנט

להלן פלט נתון מציג את רשימת ה-commit SHA hash עם הודעות commit:

שלב 6: השתמש ב-git reset –soft Command

כדי להחזיר את השינויים שנוספו ממאגר Git לאינדקס הבימוי, השתמש ב-' איפוס git פקודת ' יחד עם הפקודה '- רַך ' אפשרות, וציין את מיקום HEAD הרצוי שבו נדרש להזיז את המצביע:

$ איפוס git --רַך ראש ~ 1

שלב 7: בדוק את סטטוס Git

כעת, ודא את המיקום החוזר של ה-HEAD בדוק את מצב מאגר Git:

$ סטטוס git

ניתן לראות כי ' git reset -רך הפקודה החזירה את השינויים ב-commit לאינדקס ה-Git. יתר על כן, ה' File4.txt ' הקובץ נמצא כעת באינדקס ה- Git וצריך להיות מחויב:

שלב 8: בדוק Git Log

כדי להציג את המיקום הנוכחי של HEAD, הפעל את הפקודה הנתונה יחד עם ' -שורה אחת ' אפשרות:

$ git log --באינטרנט

כאן, ה-HEAD מצביע על ' קובץ 3 ' להתחייב:

שלב 9: השתמש ב-git reset - פקודה מעורבת

כדי לבטל שינויים מחויבים ולהסיר את הקבצים מאזור ההיערכות מבלי למחוק מהם מספריית העבודה, הפעל את ' $ git reset -mixed ' הפקודה יחד עם עמדת ה-HEAD הנדרשת של ה-commit:

$ איפוס git --מעורב ראש ~ 1

שלב 10: בדוק את סטטוס Git

הצג את השינויים החדשים שנוספו על ידי בדיקת מצב מאגר Git:

$ סטטוס git

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

שלב 11: בדוק Git Log

בדוק את היסטוריית יומן ההפניה של מאגר Git יחד עם ה-hash של SHA:

$ git log --באינטרנט

שלב 12: השתמש ב-git reset - פקודה קשה

כדי להסיר שינויים שנוספו מספריית העבודה המקומית של Git, בצע את ' $ git reset -קשה ' פקודה:

$ איפוס git --קָשֶׁה ראש ~ 1

שלב 13: אמת את מצביע HEAD שהוחזר

כדי לאמת את מצביע HEAD, חזור למיקום שצוין, הפעל את ' git log ' פקודה:

$ git log --באינטרנט

פלט מתחת מראה שה-HEAD מצביע על ' קובץ 1 נוסף ' להתחייב:

שלב 14: בדוק את סטטוס Git

כדי לראות את השינויים שנוספו, בדוק את סטטוס Git:

$ סטטוס git

ניתן לראות שאין לנו שום מסלול ושינויים ממתינים של ' File2.txt 'קובץ. לכן, File2.txt הוסר לחלוטין:

שלב 15: אמת את רשימת תוכן המאגר

כדי לאמת את רשימת המאגר של התוכן, הפעל את ' ls ' פקודה:

$ ls

כפי שאתה יכול לראות, ה' File2.txt ' הקובץ אינו קיים בספרייה הנוכחית:

הסברנו את ההבדל בין אפשרויות איפוס git -מעורבות, -רכות ו-קשות.

סיכום

ה ' איפוס git הפקודה משמשת לאיפוס השינויים, לשנות את ההיסטוריה של מאגר Git ולתקן טעויות. ה ' git reset -רך הפקודה שומרת את הקבצים ומחזירה את השינויים ב-commit לאזור ה-Git. לעומת זאת, ה' git reset -mixed ” הפקודה בטל את השינויים ב-commit והסר את הקובץ מאינדקס ה-Staging מבלי למחוק אותו מספריית העבודה. כדי למחוק את כל השינויים ולהסיר אותם מאזור העבודה של Git, ' git reset -קשה ניתן להשתמש בפקודה. מאמר זה הדגים את ההבדל בין git reset -mixed, -soft ו-hard.