מאמר זה יסביר בקצרה את ההבדל בין 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.