האם נתקלת בשגיאות או בעיות ב-Git commits בזמן שאתה עובד עם Git? אולי קיים סוד או מידע רגיש שנשמר. למזלך, אתה יכול לעבד את הקבצים שלך עם Git ולהסיר מ-commit ולתקן את ההיסטוריה.
אם יש לך מספר רב של commits או שלקחת העתק של מאגר עם היסטוריית commit כבר קיימת, בדרך כלל תרצה לחזור ולראות אילו commits נעשו. ובמדריך זה, תלמד איך להסיר רשומה מההיסטוריה של Git שלך.
קרא והציל את היום עם Git!
דרישות מוקדמות
מדובר בהוראות שלב-שלב. אם ברצונך לעקוב, הקפד לוודא שיש לך את הדברים הבאים במקום:
- A local machine to test the Git commands – This tutorial uses Windows 10, but later versions will also work.
- Git Bash – מדריך זה משתמש ב-Git Bash 2.36.
הסרת קובץ מ-Git Commit
כאשר אתה עובד על Git כקבוצה, אתה עושה מאות commits בכל יום. כתוצאה, יש סיכוי גבוה שתצטרך לבטל commit מסויים, כמו בשל קובץ שגוי או קבצים מרובים. הבעיה הזו נגרמת בדרך כלל על ידי שינוי בקוד או בהגדרה והופכת לבעיה.
כדי לפתור את הבעיה הזו, יהיה עליך להסיר את הקובץ או הקבצים מ-Git commit על ידי הרצת פקודות Git. תשתמש באחד מכלי הפופולריים להסרת קובץ יחיד מ-Git commit, כמו כלי Git Bash.
א. פתח את כלי Git Bash במחשבך של Windows.
ב. לאחר מכן, הרץ את הפקודה למטה כדי ליצור תיקייה למאגר הקוד שלך ולהחליף אליה.
הפקודות האלו אינן מציגות פלט בטרמינל, אך הקפיצה יכולה להיבצע בהצלחה. יש לוודא שמחליף את ~/Desktop/Repository/repo1 בנתיב ושם התיקייה המועדפים עליך.
ג. הרץ את הפקודות הבאות כדי לאתחל את המאגר שלך וליצור שני קבצי טקסט בשמות test1.txt ו־test2.txt.

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

ה. הפעל את הפקודה git add להוספת שני קבצי הטקסט שיצרת בשלב השלישי (test_file1.txt ו־test_file2.txt) למאגר המקומי שלך.
הפקודה לא מציגה פלט, אך היא מוסיפה את הקבצים מבלי לדחוף אותם למאגר המרוחק.
ו. לבסוף, הפעל את הפקודה git commit למעקב אחרי התקדמותך והשינויים שביצעת במאגר המקומי שלך.

7. לאחר הפקידה, הריצו את הפקודה למטה כדי להסיר קובץ מסוים (test_file2.txt) מהפקודה של Git.

8. לבסוף, הריצו מחדש את הפקודה git status למטה כדי לוודא את מצב המאגר.
כפי שאתה רואה למטה, הקובץ הוסר מאזור העמדה (הפקודה של Git) ומציג את הקובץ (test_file2.txt) תחת קבצים לא מעוקבים.

הסרת כל הקבצים שנפקדו לאחרונה
למדת כעת להסיר קובץ מסוים מהפקודה של Git. אך בדרך כלל, תצטרך למחוק מספר קבצים, ו-Git מסוגל לכך באמצעות פקודת git reset. פקודת git reset היא כלי מורכב אך, בו זמנית, רב-תכליתי לביטול שינויים במאגר.
כדי לראות איך git reset פועלת, תפקיד כמה קבצים, ואז אפס את השינויים כדי להסיר קבצים שנפקדו לאחרונה שמאוחסנים בפקודה של Git:
1. צרו שני קבצי טקסט חדשים בשמות test_file3.txt ו־test_file4.txt בתיקיית ~/Desktop/Repository/repo1.
2. לאחר מכן, הריצו את הפקודה git add למטה, שאינה מספקת פלט אך מוסיפה את קבצי הטקסט החדשים למאגר המקומי שלכם (~/Desktop/Repository/repo1).
3. הריצו את הפקודה git commit למטה כדי להפקיד את הקבצים כך ש-Git ישמור על התקדמות ועל השינויים שביצעתם במאגר.

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

5. לאחר מכן, הריצו את פקודת ה-Git Reset למטה כדי לשחזר את המחוונים שנעשו לאחרונה בשלב שלוש. פקודה זו לא מספקת פלט אך מסירה את הקבצים test_file3.txt ו- test_file4.txt.
ניתן גם להשתמש ב-Git Reset –soft HEAD^ כדי להסיר את כל הקבצים שנכנסו עד כה.
6. לאחר מכן, הריצו מחדש את פקודת ה-Git Status למטה כדי לאמת את מצב המאגר.
למטה, הפלט מציג את הקבצים test_file3.txt ו- test_file4.txt שצריכים להתחייב. הפלט הזה מסמן את הקבצים שיש להסיר מההתחייבות של Git.

הסרת מחוונים מהיסטוריית Git
הסרת כל הקבצים שנכנסו עד כה עובדת מצוין אם ברצונכם להתחיל מחדש. אך מה קורה אם אתם רוצים להסיר רק מחוון מסוים? פקודת ה-git revert תעשה את העבודה, כל עוד אתם יודעים את זיהוי המחוון.
בשלב האחרון של סעיף "הסרת כל הקבצים שנכנסו לאחרונה", הבנתם שהמחוונים לא הותחברו אך השתנו. עכשיו תצרפו את השינויים כדי לראות את פקודת git revert
בפעולה.
הריצו את פקודת git commit
למטה כדי להתחייב את השינויים האחרונים במאגר המקומי שלכם.
אחרי הרצת הפקודה, תשים לב ששני קבצי הטקסט נקלטים שוב, והמזהה של ההתחייבות הוא 0315b85, כפי שמוצג למטה.

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

מחיקת ספרייה מהיסטוריית ההתחייבויות ב-Git
כעת, אתה כבר יודע איך למחוק קובץ שהוא בהתחייבות, אך איך למחוק ספרייה? למחיקת ספרייה מהתחייבות ב-Git דומה למחיקת קבצים.
1. הרץ את הפקודות למטה, שאין להן פלט אך מבצעות את הפעולות הבאות:
- צור תיקייה בשם
myfolder
בתוך המחסן המקומי שלך (~/Desktop/Repository/repo1).
- צור קובץ בשם l.txt בתוך התיקייה ~/Desktop/Repository/repo1/myfolder.
2. לאחר מכן, הרץ את הפקודות של git למטה כדי להוסיף את התיקייה החדשה (~/Desktop/Repository/repo1/myfolder) למחסן המקומי שלך.

3. הרץ את פקודת ה-git rm הבאה כדי להסיר את התיקייה (myfolder) שהתחייבת בשלב שני.

4. לבסוף, הרץ את פקודת ה-git status כדי לאמת את מצב המחסן ולראות האם התיקייה נמחקה.
למטה, תראה שהתיקייה כולה (myfolder) נמחקה בהצלחה, יחד עם הקובץ l.txt בתוכה.

סיכום
במדריך זה, למדת לעבוד עם הטיות של Git, כגון הסרת הטיית ספציפית, קובץ או קבצים מרובים. גם נגעת במחיקת תיקייה שלמה בתוך המאגר המקומי ובביצוע קומיט לשינויים.
בנקודה זו, תוכל לבטח לבצע קומיטים במאגר שלך ולהסיר קומיטים שתרצה להסיר מבלי לגרום לבלבול.
עם מה שלמדת במדריך זה, איזו שיטה אתה חושב שיכולה להיות מצוינת לעבוד עם קומיטים עבור הצוות שלך?
Source:
https://adamtheautomator.com/git-and-remove-from-commit/