logo

איך לבטל את ההתחייבות האחרונה

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

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

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

בטל Last Git Commit יחד עם איפוס

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

ההתחייבות האחרונה של ה-git תימחק ממאגר ה-Git שלנו.

 $ git reset --soft HEAD~1 

בסימון זה,

'HEAD~1': זה אומר שאנחנו רוצים לאפס את ה-HEAD הזה ל-commit בודד לפני ההיסטוריה של היומן.

string.format ב-java
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

מה תהיה ההשפעה של הפקודה לעיל?

הפקודה, כלומר, 'איפוס git' ניתן לראות כפקודה, כלומר הפוכה ל- 'גיט להוסיף' , בעצם הכנסת קבצים לאינדקס Git.

אם מתאר את האפשרות של '-רַך' , Git לא ישנה את הקבצים בתוך האינדקס או ספריית ההפעלה בכלל.

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

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

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

 $ git reset --soft HEAD~1 $ git status 

מעל אדון הסניף

הסניף שלנו הוא מאסטר/מקור קדימה על ידי התחייבות 1 (החל 'git push' לפרסום ההתחייבויות המקומיות שלנו).

ipconfig על אובונטו

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

 (apply 'git restore --staged …' to unstage) 

קובץ חדש: file1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

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

ביצענו את ההתחייבות האחרונה במאגר שלנו בהצלחה.

איפוס קשיח להתחייבות Git

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

זוהי מטרה של אופציה, כלומר, '-קָשֶׁה' .

מה זה מחסנית ב-java

כדי לבטל את ה-commit האחרון ולהסיר כל שינוי באינדקס ובספרייה, בצע פקודה, כלומר, 'איפוס git' יחד עם האפשרות, כלומר, '-קָשֶׁה' ותאר התחייבות לפני הפקודה HEAD ('HEAD~1') .

 $ git reset --hard HEAD~1 

כל התחייבות ושינוי יוסרו מהאינדקס ומהספרייה לאחר השימוש ב- '--קָשֶׁה' פקודה. אז אנחנו צריכים להיות זהירים.

לדוגמה, העברנו כל קובץ חדש בשם 'file1' למאגר Git שלנו.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

כעת, נניח שאנו רוצים לבטל את ההתחייבות האחרונה ולהסיר כל שינוי.

 $ git reset --hard HEAD~1 

כעת, HEAD נמצא ב-90f8bb1 התחייבות שנייה

עכשיו, בואו נבדוק את מצב מאגר ה-git שלנו.

 $ git status 

מעל אדון הסניף

הסניף שלנו עכשווי עם מאסטר/מקור (החל את פקודת 'git push' לפרסום המחויבויות המקומיות שלנו).

שועל נגד זאב

עכשיו, אין מה להתחייב, והעץ הפועל נקי.

Mixed Reset Git commit

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

 $ git reset --mixed HEAD~1 

לדוגמה, כללנו כל קובץ בשם 'file1' בתוך כל commit שאנו נדרשים לבטל.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

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

כתוצאה מכך, ה '-מעורב' הפקודה היא א 'לְעַרְבֵּב' בין האיפוס הקשה והרך, כך שמו.

מעל אדון הסניף

הסניף שלנו הוא מאסטר/מקור קדימה על ידי התחייבות 1 (החל 'git push' לפרסום ההתחייבויות המקומיות שלנו).

קבצים ללא מעקב: (החל את 'git add …' כדי להוסיף בתוך מה שיתחייב)

 file1 

שום דבר לא כלול עבור התחייבות אבל הקבצים שאינם במעקב קיימים (החל 'git track' למעקב).

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

בטל את ההתחייבות האחרונה יחד עם החזרה

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

 $ git revert HEAD 

הפקודה 'git revert' שונה בהשוואה לפקודה 'git reset' מכיוון שהיא יכולה להקליט כל commit חדש יחד עם כמה שינויים שהוגדרו על ידי ניוון ה-commit האחרון.

אנו יכולים לתאר את 'HEAD~1' עם הפקודה 'git reset' מכיוון שפקודת איפוס זו תגדיר כל מקום HEAD חדש תוך ניוון ה-commit המתואר.

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

java int במחרוזת
 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

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

איך לבטל את ההתחייבות האחרונה

הודעה חדשה תופיע יחד עם commit hash חדש כשנסיים לבצע הודעת commit.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

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

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit