Passer au contenu
GitTree
Guides Git4 minutes de lecture

Comment créer et appliquer un patch dans Git

Un correctif transporte les modifications entre les référentiels sous forme de fichier texte brut. Voici quand utiliser git diff ou git format-patch, quand utiliser git apply ou git am et comment corriger un correctif qui refuse de s'appliquer.

Écrit par Kodmora

L'éditeur de logiciels derrière GitTree

Mis à jour
  • Commits
  • Dépôts distants et push
Sur cette page

Pour créer un correctif, exécutez `git diff > fix.patch` pour les modifications non validées ou `git format-patch -1 HEAD` pour votre dernière validation. Pour en appliquer un, exécutez `git apply fix.patch` ou `git am 0001-my-change.patch`. Utilisez git apply lorsque vous souhaitez uniquement les modifications dans votre dossier de travail. Utilisez git am lorsque vous voulez le commit original, avec son message et son auteur.

Qu'est-ce qu'un correctif Git ?

Un patch est un fichier texte répertoriant les lignes à supprimer et à ajouter dans quels fichiers. Cela convient aux moments où vous ne pouvez pas pousser vers le même dépôt distant : envoyer un correctif par e-mail, déplacer une modification entre des référentiels non liés ou conserver une modification locale en dehors du contrôle de version. Lorsque vous et l’autre personne partagez un dépôt distant, une branche est plus simple.

Comment créer un correctif à partir de modifications non validées ?

# unstaged changes
git diff > fix.patch

# staged changes
git diff --staged > fix.patch

# everything since the last commit
git diff HEAD > fix.patch

# include binary files
git diff --binary > fix.patch

Les nouveaux fichiers qui ne sont pas préparés n'apparaissent pas dans git diff. Exécutez d'abord git add sur eux et utilisez --staged.

Comment créer un patch à partir de commits ?

# the last commit
git format-patch -1 HEAD

# the last three commits, one file each
git format-patch -3

# everything on this branch that main does not have
git format-patch main..feature/search -o patches/

# all of it in a single file
git format-patch main --stdout > feature.patch

format-patch écrit des fichiers nommés comme 0001-add-search-box.patch. Chacun conserve le message, l'auteur et la date du commit, qu'un simple git diff perd.

Comment appliquer un patch ?

Vérifiez-le d'abord. Ces deux commandes ne changent rien :

# what it touches
git apply --stat fix.patch

# whether it will apply
git apply --check fix.patch

Ensuite, appliquez-le comme vous en avez besoin :

# into the working folder, nothing staged
git apply fix.patch

# into the working folder and the staging area
git apply --index fix.patch

# as commits, with their messages and authors
git am patches/*.patch

Quelle est la différence entre git apply et git am ?

git apply comparé à git am
git applygit am
LitToute différenceFichiers de git format-patch ou boîtes aux lettres
RésultatFichiers modifiés, pas de commitUn commit par patch
Conserve le message et l'auteurNonOui
Sur un échecN'applique rien par défautS'arrête ; continuer ou git am --abort

Comment puis-je corriger « le correctif ne s'applique pas » ?

error: patch failed: src/search.ts:14
error: src/search.ts: patch does not apply

Le fichier a changé depuis la création du correctif, donc ses lignes de contexte ne correspondent plus. Essayez-les dans l'ordre :

  1. git apply --3way fix.patch utilise les blobs d'origine pour fusionner et laisse les marqueurs de conflit normaux. Il a besoin de ces blobs dans votre référentiel.
  2. git apply --whitespace=fix fix.patch est utile lorsque seuls les espaces ou les fins de ligne diffèrent.
  3. git apply --reject fix.patch applique ce qu'il peut et écrit les pièces défaillantes dans .rej fichiers pour que vous puissiez le faire à la main.
  4. Vérifiez le commit à partir duquel le patch a été créé, appliquez-le là, puis rebasez.

Pour git am, utilisez git am --3way, résolvez le conflit, git add le fichier et exécutez git am --continue. Pour revenir en arrière, exécutez git am --abort, comme indiqué dans comment abandonner une fusion ou un rebase.

Comment annuler un patch ?

git apply -R fix.patch

-R applique le correctif à l'envers. Si vous avez utilisé git am, les commits sont des commits normaux, alors annulez-les avec `git reset` ou `git revert`.

Comment créer et appliquer un correctif dans GitTree

  1. Enregistrer un patch

    Cliquez avec le bouton droit sur un commit et ouvrez Copier, puis Créer un patch à partir du commit…. Sélectionnez plusieurs commits pour Créer un correctif à partir des validations…, ou cliquez avec le bouton droit sur un fichier modifié pour Créer un correctif à partir des modifications de fichiers….

  2. Appliquer un patch

    Exécutez Apply Patch… à partir de la palette de commandes et choisissez le fichier. GitTree indique le nombre de fichiers et de commits qu'il contient et s'il inclut des modifications binaires.

  3. Choisissez comment l'appliquer

    Sous Appliquer à, choisissez Arbre de travail uniquement (git apply), Arbre de travail et effectuer les modifications (git apply --index) ou En tant que validation sur la branche actuelle (git am), puis appuyez sur Appliquer.

Créer un patch à partir d'un commit… dans le sous-menu Copier d'un commit dans GitTree.
Créer un patch à partir d'un commit… dans le sous-menu Copier d'un commit dans GitTree.Interface GitTree avec un référentiel de démonstration.

Le guide de création et application de correctifs répertorie toutes les options.

Questions fréquemment posées

Quelle est la différence entre git diff et git format-patch ?

git diff écrit uniquement les modifications. git format-patch écrit un fichier par commit avec le message, l'auteur et la date, afin que git am puisse recréer le commit.

Est-ce que git apply crée un commit ?

Non, cela ne modifie que les fichiers. Passez-les en revue, puis validez comme d'habitude. Utilisez git am pour obtenir des commits.

Comment appliquer un correctif de GitHub ?

Ajoutez .patch à la fin d'une URL de validation ou de demande d'extraction sur GitHub, téléchargez le fichier et exécutez git am dessus.

Un patch peut-il inclure des fichiers binaires ?

Oui, si vous le créez avec git diff --binary. git format-patch inclut les modifications binaires par défaut.

Est-ce qu'une sélection de cerises est meilleure qu'un patch ?

Lorsque les deux validations se trouvent dans un référentiel ou dans un référentiel distant récupéré, oui : `git cherry-pick` est plus court et suit la validation source. Les correctifs sont destinés lorsque les référentiels ne peuvent pas se joindre.

Sources

Les allégations concernant d'autres produits ont été vérifiées par rapport à leurs pages officielles sur 7 novembre 2026. Les prix et les fonctionnalités changent ; les pages des fournisseurs sont la source de vérité.