Blog JSystems - uwalniamy wiedzę!
Blog JSystems - uwalniamy wiedzę!
Claude Code
Claude Code chce pushnąć na main - jak wymusić pracę na branchu
main albo master), a Ty chcesz, żeby zawsze pracował na osobnym branchu.CLAUDE.md oraz dołóż twardą bramkę w settings.json (permissions.ask albo permissions.deny na git push), a przed pracą sam utwórz i przełącz się na branch.Claude Code, oficjalne narzędzie CLI od Anthropic do programowania z AI, potrafi samodzielnie prowadzić operacje git - dodawać pliki, tworzyć commity i wypychać je na zdalne repozytorium. To wygodne, dopóki nie zorientujesz się, że zmiany wylądowały prosto na main, zamiast na gałęzi roboczej, którą chciałeś dopiero przejrzeć w pull requeście. Poniżej pokazujemy, dlaczego tak się dzieje i jak ustawić stały workflow oparty na branchach.
Prosisz o wprowadzenie zmiany, a na koniec w podsumowaniu widzisz coś w stylu:
Utworzyłem commit i wypchnąłem zmiany.
branch: main
commit: fix: popraw walidację formularza
push: origin/main (up to date)
Zaglądasz do repozytorium i okazuje się, że nowy commit siedzi już na gałęzi głównej. Nie ma osobnego brancha, nie ma pull requesta, nie ma miejsca na review. Jeśli zespół pracuje w modelu pull requestów, taki bezpośredni push na main potrafi ominąć cały proces akceptacji.
To nie jest błąd - to domyślna polityka uprawnień. W nowszych wersjach Claude Code klasyfikator uprawnień pozwala domyślnie na push na dowolną gałąź repozytorium, w którym wystartowała sesja, łącznie z gałęzią domyślną. Wyjątkiem są operacje wyraźnie ryzykowne, na przykład force push albo wypchnięcie sekretów - te są blokowane. Zwykły commit i push na main nie są traktowane jako ryzykowne, więc Claude Code je wykonuje.
Jest jednak druga, kluczowa zasada: Twoje instrukcje dotyczące gita mają pierwszeństwo. Jeśli w zadaniu, w pliku CLAUDE.md albo w pamięci projektu napiszesz, że commitowaniem i pushowaniem zajmujesz się sam albo że praca ma iść na osobny branch, Claude Code się do tego zastosuje i zostawi git Tobie. Domyślne zachowanie obowiązuje tylko wtedy, gdy nie powiedziałeś inaczej.
CLAUDE.md w katalogu repozytorium dopisz jednoznaczne zdanie, na przykład: Nigdy nie commituj i nie pushuj na main. Zawsze twórz osobny branch i otwieraj pull request. Push tylko na moje wyraźne polecenie. Claude Code czyta ten plik na starcie każdej sesji.settings.json. Sama instrukcja tekstowa to prośba, a reguła uprawnień to zapora. W .claude/settings.json dodaj wpis "permissions": { "ask": ["Bash(git push *)"] }, żeby każdy push wymagał Twojego potwierdzenia. Jeśli push ma być całkiem zablokowany, użyj sekcji "deny" zamiast "ask".ask możesz zawęzić do konkretnych komend gita, na przykład Bash(git commit *), aby Claude Code pytał, zanim cokolwiek zatwierdzi.CLAUDE.md.main wchodzi się wyłącznie przez pull request. Ta ochrona działa niezależnie od Claude Code.Uruchom nowe zadanie testowe (na przykład drobną zmianę w README) i obserwuj podsumowanie. Jeśli Claude Code zapyta o zgodę przed pushem albo zgłosi, że zostawia commitowanie Tobie, reguły działają. Sprawdź też polecenie git log --oneline -5 oraz git branch --show-current - nowy commit powinien być na gałęzi feature, a nie na main. Na koniec potwierdź, że zdalne main nie dostało nowych commitów bez pull requesta.
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...