שמור על היום עם Git והסר מהיסטוריית השינויים

האם נתקלת בשגיאות או בעיות ב-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 בנתיב ושם התיקייה המועדפים עליך.

# יוצר את תיקיית המאגר ותת-תיקיית repo1
mkdir -p ~/Desktop/Repository/repo1
# משנה את תיקיית העבודה ל repo1
cd ~/Desktop/Repository/repo1

ג. הרץ את הפקודות הבאות כדי לאתחל את המאגר שלך וליצור שני קבצי טקסט בשמות test1.txt ו־test2.txt.

# אתחול המאגר המקומי (יצירת תיקייה נסתרת .git)
git init
# יוצר שני קבצי טקסט
touch test_file1.txt test_file2.txt
Initializes the local repository

ד. כעת, בצע את הפקודה למטה כדי לבדוק את מצב ה-commit של Git.

git status

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

Checking the status of Git commits on the Git terminal

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

הפקודה לא מציגה פלט, אך היא מוסיפה את הקבצים מבלי לדחוף אותם למאגר המרוחק.

git add .

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

git commit -m "Adding two new files test_file1.txt and text_file2.txt"
Committing Changes to Repository

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

git rm --cached test_file2.txt
Removing a Specific File from the Git Commit

8. לבסוף, הריצו מחדש את הפקודה git status למטה כדי לוודא את מצב המאגר.

git status

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

Verifying the Removed Git Commit (test_file2.txt)

הסרת כל הקבצים שנפקדו לאחרונה

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

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

1. צרו שני קבצי טקסט חדשים בשמות test_file3.txt ו־test_file4.txt בתיקיית ~/Desktop/Repository/repo1.

touch test_file3.txt test_file4.txt

2. לאחר מכן, הריצו את הפקודה git add למטה, שאינה מספקת פלט אך מוסיפה את קבצי הטקסט החדשים למאגר המקומי שלכם (~/Desktop/Repository/repo1).

git add .

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

git commit -m "Adding two more files"
Committing Changes to the Repository

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

git status

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

Checking the Status of Git Commits

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

git reset --soft HEAD~1

ניתן גם להשתמש ב-Git Reset –soft HEAD^ כדי להסיר את כל הקבצים שנכנסו עד כה.

6. לאחר מכן, הריצו מחדש את פקודת ה-Git Status למטה כדי לאמת את מצב המאגר.

git status

למטה, הפלט מציג את הקבצים test_file3.txt ו- test_file4.txt שצריכים להתחייב. הפלט הזה מסמן את הקבצים שיש להסיר מההתחייבות של Git.

Verifying the Recent Commits were Removed

הסרת מחוונים מהיסטוריית Git

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

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

הריצו את פקודת git commit למטה כדי להתחייב את השינויים האחרונים במאגר המקומי שלכם.

git commit -m "Hello, I am committing those two files again"

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

Committing the Changes in the Local Repository

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

git revert 0315b85

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

Reverting the Changes in the Local Repository

מחיקת ספרייה מהיסטוריית ההתחייבויות ב-Git

כעת, אתה כבר יודע איך למחוק קובץ שהוא בהתחייבות, אך איך למחוק ספרייה? למחיקת ספרייה מהתחייבות ב-Git דומה למחיקת קבצים.

1. הרץ את הפקודות למטה, שאין להן פלט אך מבצעות את הפעולות הבאות:

  • צור תיקייה בשם myfolder בתוך המחסן המקומי שלך (~/Desktop/Repository/repo1).
  • צור קובץ בשם l.txt בתוך התיקייה ~/Desktop/Repository/repo1/myfolder.
mkdir myfolder && touch myfolder/l.txt

2. לאחר מכן, הרץ את הפקודות של git למטה כדי להוסיף את התיקייה החדשה (~/Desktop/Repository/repo1/myfolder) למחסן המקומי שלך.

git add .
git commit -m "Adding folder"
Adding the new folder (folder) to the Local Repository

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

git rm -r myfolder/
Removing the New Folder (folder) in Git Commit

4. לבסוף, הרץ את פקודת ה-git status כדי לאמת את מצב המחסן ולראות האם התיקייה נמחקה.

git status

למטה, תראה שהתיקייה כולה (myfolder) נמחקה בהצלחה, יחד עם הקובץ l.txt בתוכה.

Verifying the Folder (myfolder) Has Been Removed Successfully

סיכום

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

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

עם מה שלמדת במדריך זה, איזו שיטה אתה חושב שיכולה להיות מצוינת לעבוד עם קומיטים עבור הצוות שלך?

Source:
https://adamtheautomator.com/git-and-remove-from-commit/