← Модуль 2: Рабочая лошадка
2.4

Git-интеграция: коммиты, PR, merge conflicts

Цель: перестать писать коммиты "fixed stuff" и "wip". Claude делает это нативно и лучше, чем большинство.

Что умеет

Claude Code нативно работает с git:

claude "commit my changes with a descriptive message"
claude "create a PR for this feature"
claude "help me resolve these merge conflicts"
claude "show me what changed in the last 5 commits and explain the impact"

Качественные коммит-сообщения

Claude пишет нормальные сообщения — не "fixed stuff", а описания что изменилось и почему.

Сравни:

# Обычный коммит разработчика
fix: bug
 
# Коммит через Claude
fix(auth): prevent token refresh race when user logs out mid-request
 
When a user clicked logout while a refresh_token call was in flight,
the callback could restore the deleted session. Added abort controller
tied to logout event + guard in refresh handler.
 
Affects: src/auth/refresh.ts, src/auth/logout.ts
Tests: updated auth.test.ts with race scenario

Разница очевидна.

Правильный workflow коммитов

Плохо: коммить всё подряд

claude "commit everything"

Claude сделает один большой коммит. Потом когда что-то сломается — не разберёшься.

Хорошо: атомарные коммиты

claude "review my staged changes, split them into logical atomic commits if needed, and write descriptive messages"

Claude:

  • Просмотрит staged changes
  • Если они смешаны — разделит
  • Каждый коммит по одному логическому изменению
  • Чистое сообщение для каждого

PR с нормальным описанием

claude "create a PR for this feature with summary, testing plan, and screenshots placeholder"

Получишь:

  • Summary — что меняется и почему
  • Testing plan — чеклист
  • Files changed — с кратким объяснением каждого
  • Placeholders для скриншотов/видео

Лучше чем 90% PR которые открывают люди.

Merge conflicts

claude "help me resolve these merge conflicts"

Claude действительно понимает код обеих сторон, а не выбирает одну наугад. Типичный подход:

  1. Читает обе версии
  2. Определяет intent каждой
  3. Предлагает merge который сохраняет оба изменения
  4. Запускает тесты чтобы убедиться

Если не уверен — спросит. Лучше пустой merge чем неправильный.

Git-задачи где Claude особенно хорош

  • Rebase interactive с squash"rebase the last 5 commits, squash fixup commits, keep clean history"
  • Rewording old commits"rewrite the last 3 commit messages with proper conventional commits format"
  • Cherry-pick c пониманием"cherry-pick the bugfix from feature-branch but not the unrelated refactor"
  • Bisect assistance"help me narrow down which commit broke the payment flow"

Что НЕ делегировать Claude

⚠️ Force push в main/master — никогда ⚠️ Amend опубликованных коммитов — только локально ⚠️ Reset --hard без бэкапа — слишком легко потерять работу ⚠️ Delete branches без подтверждения — особенно локальные с неслитыми изменениями

В настройках .claude/settings.json эти операции стоит положить в deny. Делаем в Модуле 3.

Совет: подключай GitHub MCP

В Модуле 3 подключим GitHub через MCP. Тогда Claude сможет:

claude "find all open bugs tagged 'critical' and summarize them"
claude "review open PRs, approve ones with only style changes, flag ones needing human review"
claude "create issues for the 5 top errors in Sentry this week"

Один Claude ко всему — не только локальный репо.

Практика (15 минут)

  1. Сделай какое-то изменение в коде
  2. Вместо git commit -m "wip":
    claude "review my changes, commit with a proper message"
  3. Посмотри что предложил
  4. Если нужно — скорректируй
  5. Бонус: сделай ещё 3 разных изменения одновременно, потом попроси:
    claude "split these into atomic commits"
    Посмотри как он разделяет.

Что дальше

Следующий урок: Memory, Skills, slash-команды. Как сделать так чтобы Claude помнил твои предпочтения между сессиями и умел вызывать сохранённые workflow одной командой.