Git-воркфлоу через Claude Code — коммиты, PR, ревью (Гайд и обучение Claude Code)
Git — это память проекта. Плохие коммиты — память с провалами. Claude Code умеет писать коммиты сам: смотрит diff, формулирует «почему», делает атомарные изменения. Но чтобы это работало стабильно — нужны правила.
Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper
Правила в CLAUDE.md
Git-стиль ### Коммиты - Conventional commits: `(): ` - Типы: feat, fix, refactor, test, docs, chore - Subject — строчными, без точки в конце, до 60 символов - Всегда на английском ### Атомарность - Один коммит = одно логическое изменение - Не смешивать фичу и рефакторинг в одном коммите - Не коммитить авто-форматирование отдельно — только вместе с логикой ### Запреты - Никогда не использовать `--force` на main/develop - Не коммитить секреты (проверять `.env`, `credentials.*`) - Не коммитить от имени другого автора
Шорткат для осмысленного коммита
Slash-команда в .claude/commands/c.md:
--- description: Smart commit with analysis --- Проанализируй staged изменения: 1. Покажи `git diff --staged --stat` 2. Определи тип коммита (feat/fix/refactor/...) 3. Сформулируй subject по шаблону `(): <что>` 4. Если изменений на несколько логических блоков — предложи разбить 5. Не коммить сразу — покажи сообщение и спроси подтверждение
Теперь /c делает нормальный ревью diff'а вместо «fix stuff».
Разбиение на атомарные коммиты
Одна из самых ценных команд — git add -p управляется Claude:
Сейчас staged 3 логических блока: 1. Исправление бага в auth.ts (fix) 2. Рефакторинг утилит в lib/date.ts (refactor) 3. Новый тест для auth (test) Предлагаю 3 отдельных коммита. Стартуем?
Claude сам разложит hunks по коммитам, и каждый получит правильный тип.
Pre-commit hook с проверками
.claude/settings.json:
{ "hooks": { "PreToolUse": [ { "matcher": "Bash(git commit*)", "hooks": [ { "type": "command", "command": "bash .claude/scripts/pre-commit.sh", "timeout": 60 } ] } ] } }
.claude/scripts/pre-commit.sh:
#!/bin/bash set -e # 1. Запрет секретов if git diff --staged | grep -E "(API_KEY|SECRET|PASSWORD)\s*=\s*['\"]" >/dev/null; then echo "ERROR: possible secret in diff" >&2 exit 1 fi # 2. Линтер npm run lint -- --quiet $(git diff --staged --name-only --diff-filter=ACM | grep -E "\.(ts|tsx|js)quot; | tr '\n' ' ') || exit 1 # 3. Типы npm run typecheck || exit 1 echo "✓ pre-commit checks passed"
PR через gh CLI
Команда /pr:
--- description: Create pull request from current branch --- 1. `gh pr list --head $(git branch --show-current)` — проверь нет ли уже PR 2. Покажи `git log main..HEAD --oneline` 3. Сформулируй заголовок PR (< 70 символов) 4. Сгенерируй body по шаблону: ## Что сделано - ... ## Как тестировать - [ ] шаг 1 - [ ] шаг 2 5. Создай через `gh pr create --title "..." --body "..."`
Code review чужих PR
Субагент .claude/agents/pr-reviewer.md:
--- name: pr-reviewer tools: Bash, Read, Grep --- Ревьюишь чужой PR. Шаги: 1. `gh pr diff $PR_NUM` 2. Разбери diff по категориям: логика, тесты, стиль, безопасность 3. Для каждой находки: - severity: critical / high / medium / low - файл:строка - почему это проблема - как починить (конкретно) 4. В конце — сводка: Approve / Request changes / Comment 5. Постинг комментариев — только после моего подтверждения
Запуск: «ревью PR #142». Агент скачивает diff, комментирует в структурированном виде.
Подводные камни
- Claude любит --amend. Когда хочешь это отключить, добавь в CLAUDE.md: «никогда не используй --amend — только новые коммиты».
- git add -A опасен. В .gitignore может не быть свежего .env.local. Требуй явные git add <path>.
- Force-push на main. Настрой deny в permissions: "Bash(git push --force*)": deny.
Как попробовать
1. Добавь секцию Git в CLAUDE.md 2. Создай /c и /pr команды 3. Включи pre-commit hook 4. Попробуй на реальной задаче — увидишь, как меняется качество коммитов
Канал с гайдами и контентом по claude code, выкладываем новости (когда режут лимиты в 10 раз) и какие инструменты через claude реализуем для проектов, канал: https://t.me/claudedevolper