web-dev-qa-db-fra.com

Comment prenez-vous un fichier git diff et l'appliquez-vous à une branche locale qui est une copie du même référentiel?

J'ai un fichier .diff créé par un collègue et j'aimerais appliquer les modifications répertoriées dans ce fichier diff à ma branche locale du même référentiel. Je n'ai pas accès au PC ou à la branche de ce travailleur qui a été utilisé pour générer ce fichier diff.

Évidemment, je pouvais aller ligne par ligne et tout retaper, mais je préfère ne pas soumettre le système à une erreur humaine. Quelle est la façon la plus simple de faire cela?

407
Mike_K

Copiez le fichier diff à la racine de votre référentiel, puis faites:

git apply yourcoworkers.diff

Plus d'informations sur la commande apply sont disponibles sur sa page de manuel .

Soit dit en passant: Un meilleur moyen d'échanger des commits entiers par fichier est la combinaison des commandes git format-patch sur l'expéditeur, puis git am sur le destinataire, car il transfère également les informations de l'auteur et le message de validation.

Si l'application du correctif échoue et si les validations générées par le diff sont réellement dans votre référentiel, vous pouvez utiliser l'option -3 de apply qui tente de fusionner les modifications.

Cela fonctionne aussi avec les pipes Unix comme suit:

git diff d892531 815a3b5 | git apply
623
Philipp