git · git:20260825.12ce506 · 2026-08-25 · sha256 14fcaaa2dacd244e

git git:20260825.12ce506A

Immutable. This exact content never changes and is served at /api/v1/blob/14fcaaa2dacd244e.

---
name: git
description: "git workflows for agents: ship (stage → commit → push), hunks (selective staging). never force push, never git add -A, conventional commits. triggers on: commit, push, stage, ship, git add, hunks, selective staging."
---
# git

## constraints

- stage files explicitly, NEVER `git add -A` (unstaged changes may not be yours)
- NEVER force push (`--force`, `-f`, `--force-with-lease`)
- if unsure which changes are yours, ask user
- commit format: `type(scope): description` (lowercase, imperative)
- types: `feat` `fix` `docs` `style` `refactor` `perf` `test` `chore`
- prefer `gh` cli for github operations (PRs, issues, repo info) — auth is pre-configured via sops

## ship

stage YOUR changes, commit, push.

```bash
git status
git add <your-files>
git diff --staged
git commit -m "type(scope): description"
git push
```

if push fails (divergence): `git fetch origin && git rebase origin/main && git push`

## hunks

selective staging without interactive mode.

```bash
git hunks list           # shows hunks with IDs
git hunks add <id>       # stages specific hunk
git hunks add 1 3 5      # stage multiple hunks
```

use when you need to split changes across commits.