Guía9 min

git add para coding agents: paths explícitos, nunca git add .

Resumen

git add actualiza el index con el contenido del working tree. git add . y -A meten .env, dist y el scratch del agente. Esta guía fija paths explícitos, -p cuando hay duda, -f prohibido, y git status antes del commit. Manual git-add.

GitHub
Un index de Git que solo recibe archivos listados, no todo el directorio

Qué resuelve

Esta pieza se queda en la decisión práctica: qué instalar, qué riesgo agrega y cómo aplicarlo sin romper operación.

El commit es una foto del index, no del disco. git add copia working tree → index. Un agente que corre git add . o git add -A mete lo que sea untracked: .env, *.webp de un experimento, node_modules si el ignore falló. El man page lo dice: por default no añade ignored; con -f sí. El incidente habitual es -f “porque Git se negó”.

No sustituye gitignore. Ignore no salva un add -f. El curso instalar un agente no cubre el index.

El contrato

git status
git add path/to/file.ts path/to/other.ts
git diff --cached --stat
git commit

Paths nombrados. Un directorio (src/lib/) solo si todo ahí es el cambio. Nunca . ni -A en un harness autónomo.

-n / --dry-run: muestra qué se añadiría. Úsalo si el glob da miedo.

Index con paths listados

Flags que el agente no debe tocar

FlagQué haceAgente
<pathspec>Añade esos pathsSí, la vía default
-p / --patchHunks interactivosNo en headless; sí humano
-u / --updateSolo trackeados, incluye deletesOK si no hay untracked que commitear
-A / --allTodo el árbol, también deletesNo
-fIgnored filesNunca
-NIntent-to-addNo
--refreshStat onlyRaro

El man page: si nombras un ignored en la CLI, git add falla y lista esos files. Recursion/glob de Git los salta en silencio. Un git add src no mete src/.env gitignored; git add -f src/.env sí. Prohíbe -f en AGENTS.md.

git add se puede correr varias veces antes del commit. Cada run toma el contenido en ese instante. Si el agente edita de nuevo, hay que add otra vez. Si no, el commit es una versión vieja. Eso explica PRs “sin el fix”.

Receta anti-caos

  1. git status (working tree vs index vs HEAD).
  2. Lista de paths del ticket, no “todo lo sucio”.
  3. git add -- path1 path2 (-- por si un path empieza con -).
  4. git diff --cached: el PR es esto.
  5. Si aparece un untracked que no pediste: no lo añadas. Pregunta o déjalo.

Worktrees: el index es por worktree. add en el principal no mete el cambio del agente.

status, add paths, diff cached

FAQ

¿git commit -a? Solo trackeados; salta untracked. Sigue siendo amplio. Prefiere add explícito.

¿Glob *.mdx? Cita el glob para que lo expanda Git, no el shell, o lista files. Un *.mdx del shell en el dir equivocado es un accidente.

¿Binarios WebP? Si el ticket es la guía, sí: nómbralos. No public/images/posts/.

¿Restore del index? git restore --staged <path>. No git reset duro.

Un git add -A && git commit -m wip es cómo un agente publica .DS_Store y un dump SQL. Si el status muestra untracked que no reconoces, el siguiente comando no es add: es git status -u y leer. El index no es una papelera.

Verificado 2026-09-03 contra git help add (index snapshot, ignored + -f, pathspec).