Claude won't commit or push unless you tell it to. When you say "commit this", it stages the relevant files, writes a commit message based on the diff, and commits. It reads your recent git log first to match your team's message style.
For branches, Claude creates them with git checkout -b or git switch -c. It will warn you before force-pushing to main and will skip --no-verify unless you explicitly ask. If a pre-commit hook fails, Claude fixes the issue and creates a new commit. I find this important: it never amends the previous commit after a hook failure, because amending in that scenario would silently discard the previous work.