Le cas pour le staging en mode patch
Le git add par défaut stage des fichiers entiers. Les éditions réelles arrivent rarement par unités de fichier entier.
Invoquer le mode patch
git add -p
git add -p src/checkout.js
Stage this hunk [y,n,q,a,d,s,e,?]?
Les prompts qui comptent
y- stager ce hunk.n- sauter ce hunk.s- diviser en hunks plus petits.e- éditer le hunk à la main.q- quitter.a- stager celui-ci et tous les suivants dans le fichier.d- sauter celui-ci et tous les suivants.
Édition manuelle de hunk
Appuyer sur e ouvre le hunk dans votre éditeur. Pour exclure un ajout, supprimez la ligne. Pour exclure une suppression, remplacez le - initial par un espace.
Un workflow réel
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"
Mode patch pour d'autres commandes
git reset -p
git checkout -p
git stash -p
git restore -p