Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Claude Code
Claude Code nie widzi zmian w repo - staged vs unstaged
Claude Code, narzędzie CLI od Anthropic do programowania z AI, świetnie współpracuje z gitem - potrafi obejrzeć Twoje zmiany, streścić je, przygotować commit. Robi to jednak tak, jak zrobiłby doświadczony programista: patrząc na stan repozytorium przez komendy gita. A git nie traktuje wszystkich zmian jednakowo. Część siedzi w poczekalni (obszarze staged, przygotowanym do commita), a część jest poza nią (unstaged). Jeśli nie wiesz, gdzie są Twoje zmiany i o co dokładnie prosisz, łatwo o wrażenie, że narzędzie ich nie widzi.
Modyfikujesz plik, prosisz Claude Code o przejrzenie zmian, a ono odpowiada, że nie ma żadnych - albo pokazuje tylko część tego, co zrobiłeś. Bywa odwrotnie: wykonałeś git add, a narzędzie i tak mówi o innych plikach niż te przygotowane do commita. Częsty scenariusz to prośba o commit: narzędzie commituje mniej, niż się spodziewałeś, bo część zmian nadal jest poza poczekalnią. Albo zupełnie nie widzi świeżo utworzonego pliku, który leży w katalogu, ale nie został jeszcze dodany do gita. Wygląda to na ślepotę narzędzia, a jest po prostu innym zakresem, na który patrzy.
Claude Code nie ma magicznego wglądu w Twoje pliki - stan zmian ustala tak samo jak Ty w terminalu, uruchamiając komendy gita w rodzaju git status i git diff. A git rozdziela zmiany na dwie grupy. W poczekalni (staged) są pliki po git add, gotowe do zapisania w commicie - te pokazuje git diff --staged. Poza poczekalnią (unstaged) są zmiany w plikach już śledzonych, których jeszcze nie dodałeś - te pokazuje samo git diff. Oddzielnie istnieją pliki nieśledzone (nowe, o których git jeszcze nie wie, dopóki ich nie dodasz). Dlatego wszystko zależy od tego, o co poprosisz: pytanie o zmiany do commita dotyczy poczekalni, a pytanie o niezapisane zmiany - grupy poza nią. Do tego dochodzą dwie prozaiczne pułapki: zmiana nie została zapisana na dysk w edytorze (więc git jej nie widzi), albo plik jest wykluczony w .gitignore (więc git celowo go pomija).
git status - pokaże, które pliki są w poczekalni (przygotowane do commita), które poza nią, a które są nieśledzone.git add (a nowe pliki również), po czym poproś o przejrzenie stanu przygotowanego do commita..gitignore. Jeśli git celowo go pomija, ani git status, ani Claude Code go nie pokażą - a to bywa zamierzone.Porównaj to, co mówi Claude Code, z wynikiem git status - narzędzie powinno wskazywać dokładnie te pliki, które git wymienia w danej grupie. Jeśli chodziło o poczekalnię, zestaw odpowiedź z git diff --staged; jeśli o zmiany poza nią - z samym git diff. Po commicie uruchom git status ponownie: poczekalnia powinna być pusta, a w git log powinien pojawić się nowy commit obejmujący właśnie te zmiany, o które prosiłeś. Gdy narzędzie nadal czegoś nie widzi, wróć do dwóch podstaw - czy plik jest zapisany na dysk i czy nie jest wykluczony w .gitignore. To najczęstsze przyczyny pozornej ślepoty.
Wróć do listy: 100 najczęstszych problemów z Claude Code
Szkolenie Claude Code - od zera do zespołu agentów AI -->
Tryb planowania, tryby uprawnień, komendy, MCP, hooki i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma terminy gwarantowane - odbędzie się niezależnie od liczby zgłoszeń.
Sprawdź szkolenie Claude CodeTo szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.
★★★★★Średnia ocena naszych szkoleń w Google: 5/5
Komentarze (0)
Brak komentarzy...