Mono
Lista oczekujących

Jak cofnąć zmiany wprowadzone przez agenta programistycznego AI

Bezpiecznie cofnij edycje agenta programistycznego AI: przywróć jeden plik, odrzuć zmiany spoza commitów lub cofnij jego commit, nie tracąc własnej pracy.

Aby cofnąć zmiany agenta programistycznego AI, sprawdź, co się zmieniło, i użyj pasującego polecenia Git: git restore dla edytowanych plików, git clean dla nowych plików i git revert dla commita. Najpierw zrób kopię zapasową poleceniem git stash. Wbudowane polecenie Claude Code, /rewind, też potrafi przywrócić kod, ale nie śledzi każdej zmiany.

Ten poradnik zaczyna się w chwili, gdy już zdecydowałeś, że odrzucasz tę pracę; w podjęciu decyzji pomoże przegląd zmian w kodzie od AI. Mono pokazuje, co się zmieniło, ale tego nie cofa, więc i tam używasz tych samych poleceń.

1. Zatrzymaj agenta i sprawdź, co się zmieniło

Najpierw zatrzymaj agenta. W Mono, gdy agent pracuje, przycisk wysyłania zmienia się w przycisk anulowania. W terminalu w folderze projektu uruchom:

text
git status
git log --oneline -5

Pierwsze polecenie wyświetla zmodyfikowane, usunięte, przygotowane do commita (staged) i nowe pliki. Drugie pokazuje ostatnie commity, także te utworzone przez agenta. Zanotuj, które zmiany są Twoje: polecenia cofające nie wiedzą, kto napisał dany wiersz.

Co widzisz Jak to cofnąć
Zmodyfikowany lub usunięty plik, nieprzygotowany do commita git restore <path>
Zmiana przygotowana do commita git restore --staged <path>, potem cofnij zmiany w pliku
Nowy, nieśledzony plik git clean -n <path>, potem git clean -f <path>
Commit, którego nie chciałeś git revert <commit>

W Mono „Pokaż zmiany” wyświetla zmodyfikowane i nowe pliki od ostatniego commita, więc nie pokaże commita utworzonego przez agenta.

2. Najpierw zrób kopię zapasową

Polecenia restore i clean trwale usuwają zmiany, których nie ma w żadnym commicie, więc najpierw zapisz wszystko:

text
git stash push --include-untracked -m "before undo"
git stash apply --index

Pierwsze polecenie zapisuje zmodyfikowane i nowe pliki oraz czyści katalog roboczy; drugie przywraca je, zachowując to, co było przygotowane do commita. Na pozór nic się nie zmienia, ale git stash list zawiera teraz kopię o nazwie „before undo”.

Jeśli cofniesz za dużo, git restore --source "stash@{0}" <path> przywróci edytowany plik z najnowszego stasha.

3. Cofnij jeden plik lub jego część

Wybierz najwęższe polecenie:

  • git restore <path> odrzuca w tym pliku zmiany nieprzygotowane do commita.
  • git restore --staged <path> wycofuje zmianę z przygotowanych do commita, ale zostawia edycję w pliku.
  • git restore -p <path> pyta osobno o każdą zmienioną część (hunk), co pomaga, gdy Ty i agent edytowaliście ten sam plik.
  • git clean -n <path> wyświetla nieśledzone pliki, które usunęłoby git clean -f <path>. Zawsze podawaj ścieżkę.

Dokumentacja git restore wyjaśnia każdą opcję.

4. Cofnij wszystko, czego agent nie zatwierdził w commicie

Jeśli żadna ze zmian nie jest Twoja, odrzuć je wszystkie z katalogu głównego projektu poleceniem git restore --staged --worktree ., a nowe pliki usuń przez git clean -n . i git clean -f .. W przeciwnym razie podawaj konkretne ścieżki.

Fikcyjny przykład: poprosiłeś agenta o zmianę nazwy klasy CSS .btn-primary na .button-main w projekcie „tidy-recipes”. Wcześniej agent utworzył commit z aktualizacją pliku lockfile, o którą nikt nie prosił. Tym razem zmienił klasę w 3 plikach, przeformatował 12 niezwiązanych plików i utworzył styles/tokens.css. W międzyczasie Ty ręcznie edytowałeś README.md i chcesz tę zmianę zachować.

Po zrobieniu kopii zapasowej przywróć pliki agenta (tutaj src/ i styles/main.css) i usuń jego nowy plik:

text
git restore src/ styles/main.css
git clean -n styles/tokens.css
git clean -f styles/tokens.css

Nie używaj tu git restore .: odrzuciłoby to także Twoją edycję README. Gdybyś miał własne edycje w src/, wymień pliki agenta pojedynczo.

Teraz git status pokazuje tylko README.md, a git diff tylko Twoje wiersze. Commit z aktualizacją lockfile nadal jest w historii.

5. Cofnij commit, który agent już utworzył

git revert tworzy nowy commit, który odwraca wcześniejszy. Dokumentacja git revert mówi, że wymaga on czystego katalogu roboczego, więc najpierw odłóż na bok edycję README:

text
git stash push -m "readme" README.md
git revert <lockfile commit>
git stash pop

Użyj hasha z git log i dodaj --no-edit, żeby pominąć edytor wiadomości. git stash pop przywraca „readme” i zostawia „before undo” na liście. Teraz git status pokazuje tylko README.md, a git log --oneline pokazuje na górze Revert "Update lockfile".

W przypadku wypchniętego commita wybierz revert zamiast git reset: reset przepisuje historię, którą inni mogą już mieć. Jeśli po resecie lub rebasie commit wydaje się utracony, git reflog pokazuje commity, na których ostatnio byłeś, razem z ich hashami.

6. Korzystaj z punktów kontrolnych agenta, a Git traktuj jako zabezpieczenie

Claude Code zapisuje punkt kontrolny przed każdym promptem: uruchom /rewind albo naciśnij dwa razy Esc przy pustym prompcie, żeby przywrócić kod, rozmowę lub jedno i drugie. Jego dokumentacja punktów kontrolnych wymienia ograniczenia: zmiany wprowadzone poleceniami powłoki nie są śledzone, zmiany wprowadzone poza agentem zwykle nie są rejestrowane, a punkty kontrolne nie zastępują kontroli wersji. Dostępność zależy też od aplikacji, w której uruchamiasz agenta.

Dlatego niech Git będzie Twoim zabezpieczeniem:

  • Przed każdym zadaniem utwórz commit lub gałąź, żeby „ostatni commit” znaczył „stan sprzed pracy agenta”.
  • Powiedz agentowi, żeby nie tworzył commitów bez pytania, na przykład w pliku AGENTS.md.
  • Nie wyłączaj próśb o zgodę. Tryb YOLO w Mono, który akceptuje każdą prośbę agenta, jest domyślnie wyłączony. Zobacz, co sprawdzić, zanim zezwolisz.

W Mono karta projektu otwiera terminal w folderze projektu na Twoim komputerze, także z telefonu (zobacz poradnik zdalnego programowania). Mono nie jest jeszcze dostępny, ale możesz dołączyć do listy oczekujących.

Autor

Reunified tworzy aplikacje, które łączą z powrotem to, co rozproszone.

Przeczytaj też

Wszystkie wpisy

5 min czytania

Jak chronić się przed prompt injection w asystentach AI

Ogranicz, co asystent AI może robić z e-mailami, stronami i plikami, nie wyłączaj zatwierdzania, bezpiecznie przetestuj konfigurację i dowiedz się, co zrobić, gdy ktoś go zmanipuluje.

Wkrótce

Dołącz do listy oczekujących

Zostaw swój adres e-mail, a napiszemy do Ciebie, gdy Mono będzie do pobrania.

Gdzie będziesz używać Mono?