איך לבטל שינויים שסוכן קוד AI ביצע
בטלו בבטחה עריכות של סוכן קוד AI: שחזרו קובץ אחד, מחקו את מה שהוא השאיר בלי commit או בטלו את ה־commit שלו, בלי לאבד את העבודה שלכם.
כדי לבטל שינויים של סוכן קוד AI, בדקו מה השתנה, ואז השתמשו בפקודת Git המתאימה: git restore לקבצים שנערכו, git clean לקבצים חדשים ו־git revert ל־commit. קודם שמרו עותק גיבוי עם git stash. גם הפקודה /rewind של Claude Code יכולה לשחזר קוד, אבל היא לא עוקבת אחרי כל שינוי.
המדריך מתחיל מהרגע שהחלטתם לוותר על העבודה; בדיקת שינויי קוד שנוצרו ב־AI עוזרת לכם להחליט. Mono מראה מה השתנה אבל לא מבטל את השינויים, ולכן גם שם משתמשים באותן פקודות.
1. עצרו את הסוכן ובדקו מה השתנה
קודם כול, עצרו את הסוכן. ב־Mono, כפתור השליחה הופך לכפתור ביטול בזמן שהסוכן עובד. בטרמינל בתיקיית הפרויקט, הריצו:
git status
git log --oneline -5הפקודה הראשונה מציגה קבצים ששונו, נמחקו, הוכנו ל־commit (staged) או נוספו. השנייה מציגה את ה־commits האחרונים, כולל כאלה שהסוכן יצר. שימו לב אילו מהשינויים הם שלכם: פקודות ביטול לא יודעות מי כתב כל שורה.
| מה אתם רואים | איך לבטל |
|---|---|
| קובץ ששונה או נמחק, לא מוכן ל־commit | git restore <path> |
| שינוי שמוכן ל־commit | git restore --staged <path>, ואז לבטל את השינוי בקובץ |
| קובץ חדש שאינו במעקב | git clean -n <path>, ואז git clean -f <path> |
| commit שלא רציתם | git revert <commit> |
ב־Mono, ״הצג שינויים״ מציג קבצים ששונו וקבצים חדשים מאז ה־commit האחרון, ולכן הוא לא יראה commit שהסוכן כבר יצר.
2. שמרו קודם עותק גיבוי
הפקודות restore ו־clean מוחקות לצמיתות עבודה שלא נכנסה ל־commit, אז קודם שמרו הכול:
git stash push --include-untracked -m "before undo"
git stash apply --indexהפקודה הראשונה שומרת את הקבצים ששיניתם ואת הקבצים החדשים ומנקה את עץ העבודה; השנייה מחזירה אותם ושומרת על מה שהיה מוכן ל־commit. שום דבר לא נראה אחרת, אבל עכשיו git stash list מכיל עותק בשם ״before undo״.
אם ביטלתם יותר מדי, git restore --source "stash@{0}" <path> מחזיר קובץ ערוך מה־stash החדש ביותר.
3. בטלו קובץ אחד או חלק ממנו
בחרו את הפקודה המצומצמת ביותר:
git restore <path> מוחק את העריכות שלא הוכנו ל־commit בקובץ הזה.git restore --staged <path> מוציא שינוי מההכנה ל־commit, אבל משאיר את העריכה בקובץ.git restore -p <path> שואל על כל חלק שהשתנה (hunk) בנפרד, וזה עוזר כשגם אתם וגם הסוכן ערכתם את אותו קובץ.git clean -n <path> מציג את הקבצים שאינם במעקב ש־git clean -f <path> היה מוחק. תמיד ציינו נתיב.
התיעוד של git restore מסביר כל אפשרות.
4. בטלו את כל מה שהסוכן השאיר בלי commit
אם אף אחד מהשינויים אינו שלכם, מחקו את כולם מתיקיית השורש של הפרויקט עם git restore --staged --worktree ., ואחר כך הריצו git clean -n . ו־git clean -f . לקבצים חדשים. אחרת, עבדו לפי נתיבים.
הנה דוגמה בדויה: ביקשתם מסוכן לשנות בפרויקט ״tidy-recipes״ את שם מחלקת ה־CSS מ־.btn-primary ל־.button-main. קודם לכן הוא יצר commit עם עדכון לקובץ הנעילה (lockfile) שאף אחד לא ביקש. הפעם הוא שינה את המחלקה ב־3 קבצים, שינה את הפורמט של 12 קבצים לא קשורים ויצר את styles/tokens.css. בינתיים ערכתם את README.md ידנית, ואתם רוצים לשמור את העריכה הזו.
אחרי עותק הגיבוי, שחזרו את הקבצים של הסוכן (כאן, src/ ו־styles/main.css) והסירו את הקובץ החדש שלו:
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.cssאל תשתמשו כאן ב־git restore .: הפקודה הייתה מוחקת גם את העריכה שלכם ב־README. אם היו לכם עריכות בתוך src/, ציינו את הקבצים של הסוכן אחד אחד.
עכשיו git status מציג רק את README.md, ו־git diff מציג רק את השורות שלכם. ה־commit של קובץ הנעילה עדיין שם.
5. בטלו commit שהסוכן כבר יצר
git revert יוצר commit חדש שמבטל את השינויים של commit קודם. לפי התיעוד של git revert, הפקודה דורשת עץ עבודה נקי, אז קודם הניחו בצד את העריכה שלכם ב־README:
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash popהשתמשו ב־hash מ־git log, והוסיפו --no-edit כדי לדלג על עורך ההודעה. git stash pop מחזיר את ״readme״ ומשאיר את ״before undo״ ברשימה. עכשיו git status מציג רק את README.md, ו־git log --oneline מציג בראש הרשימה את Revert "Update lockfile".
ב־commit שכבר עשיתם לו push, עדיף revert על פני git reset, שכותב מחדש היסטוריה שייתכן שכבר נמצאת אצל אחרים. אם commit נראה אבוד אחרי reset או rebase, git reflog מציג את ה־commits שהייתם עליהם לאחרונה, עם ה־hash של כל אחד.
6. השתמשו בנקודות הביקורת של הסוכן, עם Git כגיבוי
Claude Code שומר נקודת ביקורת (checkpoint) לפני כל הנחיה: הריצו /rewind, או לחצו פעמיים על Esc כששורת ההנחיה ריקה, כדי לשחזר את הקוד, את השיחה או את שניהם. התיעוד שלו על נקודות ביקורת מפרט את המגבלות: שינויים שנעשו בפקודות shell לא נמצאים במעקב, עריכות מבחוץ בדרך כלל לא נקלטות, ונקודות ביקורת לא מחליפות ניהול גרסאות. הזמינות תלויה גם באפליקציה שבה אתם מריצים את הסוכן.
לכן Git צריך להיות רשת הביטחון שלכם:
- צרו commit או ענף לפני כל משימה, כך ש״ה־commit האחרון״ פירושו ״לפני הסוכן״.
- אמרו לסוכן לא ליצור commit בלי לשאול, למשל בקובץ AGENTS.md שלכם.
- השאירו את האישורים פעילים. מצב YOLO של Mono, שמאשר כל בקשה של הסוכן, כבוי כברירת מחדל. ראו מה לבדוק לפני שמאשרים.
ב־Mono, כרטיס הפרויקט פותח טרמינל בתיקיית הפרויקט במחשב שלכם, גם מהטלפון (ראו את המדריך לעבודה עם סוכני קוד מהטלפון). Mono עדיין לא זמין, אבל אפשר להצטרף לרשימת ההמתנה.
