git am

Patchs et réécriture

Appliquer des patchs reçus par e-mail sous forme de commits


La commande 'git am' (apply mailbox) prend les fichiers patch créés par git format-patch et transforme chacun en commit, en gardant l’auteur, la date et le message d’origine. C’est l’extrémité réceptrice des contributions par e-mail. Si un patch ne s’applique plus, git am s’arrête ; corrigez puis lancez git am --continue, ou abandonnez avec git am --abort.

Synopsis

git am [--signoff] [--3way] [<mbox> | <patch-file>...]
git am (--continue | --skip | --abort)
[ ] facultatif| ou<arg> valeur à remplacer... répétable--flag option

Options

Cliquez sur une option pour la déplier

Débutant (1)

Ajouter une ligne Signed-off-by avec votre nom à chaque commit.

Si nécessaireProjets qui exigent une chaîne de signatures

Exemple

git am -s 0001-fix.patch

Intermédiaire (1)

Si un patch ne s’applique pas proprement, se rabattre sur une fusion à trois voies (peut laisser des conflits).

RecommandéAppliquer des patchs faits sur une base un peu plus ancienne

Exemple

git am -3 0001-fix.patch

Choisir la bonne option

Appliquer des patchs

Fichiers ou commits ?

CommandeCrée un commit
git apply fix.patchNon — seulement les fichiers
git am fix.patchOui — avec l’auteur d’origine

Exemples

Appliquer des patchs

git am 0001-*.patch

Chaque fichier devient un commit.


Ajouter votre signature

git am -s 0001-fix.patch

Ajoute Signed-off-by avec votre nom.


Arrêter une application ratée

git am --abort

Tout revient comme avant.

Exemples de workflows

1
git switch -c review main

Une branche pour les tester

2
git am ~/patches/*.patch

Les appliquer

3
git log --oneline main..

Vérifier ce qui est arrivé

Dépannage

error: patch failed … patch does not apply

Cause : Vos fichiers diffèrent du contexte du patch

git am --abort, puis réessayez avec --3way, ou demandez un patch rebasé

Astuces et pièges

Bonnes pratiques

  • ✓Appliquez les patchs sur une nouvelle branche, pas directement sur main.

Erreurs fréquentes

  • ✗Utiliser git apply quand vous voulez des commits — apply ne change que les fichiers.
  • ✗Laisser un git am raté à moitié fait : terminez avec --continue ou --abort.

FAQ

A:

Cela signifie « apply mailbox » : il lit les patchs au format e-mail (mbox).