אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » Git » לבטל דברים בגיט מקומי

לבטל דברים בגיט מקומי

רן בר-זיק מרץ 27, 2016 7:07 am 3 תגובות

ביטול דברים בגיט עוד לפני שעשינו push – איך מבטלים commit, add וחברים נוספים.

המאמר הקודם במדריך ה-gitgit hooks
המאמר הבא במדריך ה-gitלבטל דברים בגיט אחרי שעשינו push
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

אפשר ללמוד גיט יותר טוב

ספר מקיף על גיט, בעברית, שנכתב על ידי רן בר-זיק וכולל תרגילים רבים ומידע מקיף - כולל הסבר על תרומה לפרויקטים של קוד פתוח ושילוב של התרומה בקורות החיים ניתן להורדה ממש פה.
כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

תמיד מגיע הרגע המר והנמהר שבו צריכים אשכרה לבטל דברים שעשינו בגיט. דוגמאות? לא חסר. למשל עשינו commit אבל גילינו שעשינו אותו ל-branch הלא נכון. או שעשינו אותו מוקדם יותר מדי. שהוספנו קובץ מסוים ואנחנו צריכים להעיף אותו מה-commit הספציפי וכו' וכו'. בגדול אפשר לחלק את הביטול לשניים – הביטול הקל הוא הביטול של דברים שעשינו מקומית אצלנו – כלומר כל החלק עד ה-commit. הביטול שיותר מורכב הוא ביטול של דברים שעשינו לאחר שעשינו push ל-repo מרוחק. במאמר הזה אני מדבר על ביטול של דברים שעשיתי מקומית.

לשחזר קובץ למצבו המקורי

אם למשל עשינו שינוי מקומי כלשהו ואנחנו רוצים להחזיר את המצב לקדמותו – כלומר למצבו לאחר הקומיט האחרון, זה קל ופשוט – git checkout ושם הקובץ או נקודה לכל הקבצים.

git checkout .
$ git status On branch master Changes not staged for commit:   (use "git add <file>..." to update what will be committed)   (use "git checkout -- <file>..." to discard changes in working directory)          modified:   index.html  no changes added to commit (use "git add" and/or "git commit -a")  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git checkout .  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git status On branch master nothing to commit, working directory clean
Git checkout שמשחזר את כל הקבצים למצבם המקורי לאחר הקומיט האחרון.

לתקן את ה-commit

נניח ועשיתי קומיט אבל עכשיו אני רוצה לתקן אוו, למשל להוסיף עוד קבצים או שינויים אחרים או לתקן את ההודעה. איך עושים את זה? מתקנים את הטעון תיקון, מוסיפים את השינויים (אם יש) עם git add בדיוק כאילו אנחנו מתכוננים לקומיט חדש. אבל במקום לעשות שוב git commit אנחנו נכתוב:

git commit --amend

מה יקרה? אני אוכל לתקן את הודעת הקומיט והקבצים/השינויים שרציתי לעשות יתווספו לקומיט האחרון כאילו הם היו חלק ממנו.

ביצעתי git add אבל במקום git commit השתמשתי ב git commit --amend. כל השינויים התווספו לקומיט האחרון ולא נחשבים כקומיט חדש.
ביצעתי git add אבל במקום git commit השתמשתי ב git commit –amend. כל השינויים התווספו לקומיט האחרון ולא נחשבים כקומיט חדש.

להוריד קובץ מה-staging

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

git reset FILENAME
$ git status On branch master Untracked files:   (use "git add <file>..." to include in what will be committed)          another_file.html  nothing added to commit but untracked files present (use "git add" to track)  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git add another_file.html  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git status On branch master Changes to be committed:   (use "git reset HEAD <file>..." to unstage)          new file:   another_file.html   barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git reset another_file.html  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git status On branch master Untracked files:   (use "git add <file>..." to include in what will be committed)          another_file.html  nothing added to commit but untracked files present (use "git add" to track)  barzik@BARZIK2 MINGW64 ~/test/examplegit (master)
ביצעתי git add ועכשיו התחרטתי, מאוד פשוט לתקן – פשוט git reset ושם הקובץ. הקובץ יצא ממצב ה-staging ואני יכול להחליט מה לעשות איתו.

לבטל commit שכבר נעשה

אם עשינו קומיט אבל התחרטנו ואנחנו רוצים לעשות לו revert, גם את זה אפשר לעשות עם git reset באמצעות הפקודה הבאה

git reset --soft HEAD~

הפקודה הזו תיקח את ה-commit (לפני שנעשה לו push כמובן) ואת כל השינויים שלו ותחזיר אותם לשלב ה-stage (כלומר השלב של רגע לפני ה-commit) מהנקודה הזו אנחנו יכולים להחליט מה לעשות איתם.

$ git status On branch master nothing to commit, working directory clean  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git reset --soft HEAD~  barzik@BARZIK2 MINGW64 ~/test/examplegit (master) $ git status On branch master Changes to be committed:   (use "git reset HEAD <file>..." to unstage)          new file:   another.html
אני עושה git status כדי לראות שכל הקבצים בתוך ה-commit. אם אני רוצה לבטל את הקומיט, כל מה שאני צריך זה להריץ את הפקודה ולראות איך הקומיט מתבטל וכל השינויים חוזרים ל-stage.

להשמיד את הקומיט האחרון

זהירות! זה משהו שימחוק דברים. אם אתה רוצה להשמיד, לאבד ולשרוף את הקומיט האחרון, יש להריץ את הפקודה הזו:

git reset --hard HEAD~

במאמר הבא אנחנו נדבר על תיקונים שאפשר לעשות לאחר שעשינו push.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
מדריך הגיט
git

3 תגובות

  1. משתמש אנונימי (לא מזוהה) הגב אפריל 18, 2016 בשעה 11:07 am

    שכחת את git revert?

    • רן בר-זיק הגב אפריל 20, 2016 בשעה 12:01 pm

      סנילי סנילי, אבל את זה לא שכחתי 🙂 במאמר הבא על ביטול דברים אחרי שעשינו להם push:
      https://internet-israel.com/%d7%9e%d7%93%d7%a8%d7%99%d7%9b%d7%99%d7%9d/git/%d7%9c%d7%91%d7%98%d7%9c-%d7%93%d7%91%d7%a8%d7%99%d7%9d-%d7%91%d7%92%d7%99%d7%98-%d7%90%d7%97%d7%a8%d7%99-%d7%a9%d7%a2%d7%a9%d7%99%d7%a0%d7%95-push/

  2. yanir הגב ספטמבר 28, 2018 בשעה 2:24 pm

    עדיף לעשות
    git rebase -i
    גם לשינוי הסבר לקומיט, גם לסדר אחרת את הקומיטים, גם למחוק לחלק ולגם לאחד

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד