Pourquoi des patches
Les patches sont des diffs portables que vous pouvez envoyer par email, coller dans un ticket ou stocker comme fichier. C'est ainsi que fonctionne le développement du noyau Linux à grande échelle et ils restent utiles chaque fois que vous devez partager un changement sans accès push à un remote partagé.
Créer avec diff et apply
git diff > change.patch
git diff main..feature > series.patch
git diff --staged > staged.patch
git apply change.patch
git apply --check change.patch
git apply --3way change.patch
Créer avec format-patch
git format-patch -1 HEAD
git format-patch main
git format-patch -3 --cover-letter -o out/
Appliquer avec am
git am 0001-fix.patch
git am out/*.patch
git am --3way out/*.patch
git am --abort
git am --skip
Patches binaires
git diff --binary > with-binaries.patch
git format-patch --binary -1
Stat seul ou résumé
git diff --stat
git format-patch --stat=200 -1
Erreurs courantes
Générer avec git diff quand il fallait des métadonnées ; format-patch est le bon choix.
Range diff pour la review
git range-diff main..v1 main..v2