El caso para el staging en modo patch
El git add predeterminado stagea archivos enteros. Las ediciones reales rara vez vienen en unidades de archivo entero — casi siempre tienes una mezcla de ajustes no relacionados.
Invocar el modo patch
git add -p
# o, limitado a un archivo específico
git add -p src/checkout.js
Stage this hunk [y,n,q,a,d,s,e,?]?
Los prompts importantes
y- stagear este hunk.n- saltar este hunk.s- dividir en hunks más pequeños.e- editar el hunk a mano.q- salir; no stagear más.a- stagear este y todos los siguientes en el archivo.d- saltar este y todos los siguientes en el archivo.
Edición manual de hunks
Presionar e abre el hunk en tu editor. Para excluir una adición, elimina la línea. Para excluir una eliminación, cambia el - inicial por un espacio.
Un flujo real
git diff src/cart.js
git add -p src/cart.js
git diff --cached src/cart.js
git diff src/cart.js
git commit -m "Fix cart total off-by-one"
Modo patch para otros comandos
git reset -p # un-stagear hunks selectivamente
git checkout -p # descartar hunks selectivamente
git stash -p # stashear hunks específicos
git restore -p