web-dev-qa-db-fra.com

Comment appliquer un patch généré avec git format-patch?

J'ai deux référentiels locaux git pointant tous deux vers le même référentiel distant.

Dans un référentiel git, si je fais git format-patch 1, comment puis-je appliquer ce correctif à l'autre référentiel?

178
silverburgh

Remarque: vous pouvez d’abord visualiser ce que votre patch fera:

D'abord les stats:

_git apply --stat a_file.patch
_

Ensuite, un essai pour détecter les erreurs:

_git apply --check a_file.patch
_

Enfin, vous pouvez utiliser git am pour appliquer votre patch en tant que commit: cela vous permet de signer un patch appliqué.
Ceci peut être utile pour référence ultérieure.

_git am --signoff < a_file.patch 
_

Voir un exemple dans cet article :

Dans votre journal git, vous constaterez que les messages de validation contiennent une balise "Signed-Off-by". Cette balise sera lue par Github et d’autres pour fournir des informations utiles sur la façon dont la validation s’est retrouvée dans le code.

Example

264
VonC
git apply name-of-file.patch
125
Jeff Dallien

Ou, si vous vous en prenez à la vieille école:

cd /path/to/other/repository
patch -p1 < 0001-whatever.patch
31
Dominic Cooney

Si vous voulez l'appliquer en tant que commit , utilisez git am .

19
Jakub Narębski

Vous devez d’abord prendre note de différence entre git am et git apply

Lorsque vous utilisez git am, vous souhaitez généralement appliquer de nombreux correctifs. Ainsi devrait utiliser:

git am *.patch

ou juste:

git am

Git trouvera automatiquement les correctifs et les appliquera dans l’ordre ;-)

UPD
Ici vous pouvez trouver comment générer de tels correctifs

17
Eugen Konkov

Si vous utilisez un JetBrains IDE (comme IntelliJ IDEA, Android Studio, PyCharm), vous pouvez faire glisser le fichier de correctif et le déposer à l'intérieur de l'EDI. Une boîte de dialogue s'affiche. montrant le contenu du patch. Tout ce que vous avez à faire maintenant est de cliquer sur "Appliquer le correctif" et un commit sera créé.

12
ice1000