web-dev-qa-db-fra.com

Créez un correctif ou un fichier diff depuis le référentiel git et appliquez-le à un autre référentiel git différent

Je travaille sur un projet basé sur WordPress et je souhaite corriger mon projet à chaque nouvelle version de WP. Pour cela, je veux générer un patch entre deux commits ou tags.

Par exemple, dans mon référentiel /www/WP je fais ceci:

$git patch-format com1..com2 --stdout > ~/patchs/mypatch.patch

Ou

$git patch-format tag1..tag2 --stdout > ~/patchs/mypatch.patch

/www/WP git natif WordPress

/www/myproject Mon projet git WordPress basé

La ligne de commande git apply ne fonctionne pas, car nous sommes dans des référentiels différents.

Puis-je générer un fichier de correctif sans commit, juste un différentiel et l'appliquer à un autre référentiel git?

Merci d'avance.

109
zatamine

Vous pouvez simplement utiliser git diff pour produire un nified diff adapté à git apply:

git diff tag1..tag2 > mypatch.patch

Vous pouvez ensuite appliquer le patch résultant avec:

git apply mypatch.patch
177
Enrico Campidoglio

Pour produire un correctif pour plusieurs commits, vous devez utiliser la commande _format-patch_ git, par exemple.

_git format-patch -k --stdout R1..R2
_

Cela exportera vos commits dans un fichier de correctif au format boîte aux lettres.

Pour générer un correctif pour la dernière validation, exécutez:

_git format-patch -k --stdout HEAD^
_

Puis, dans un autre référentiel, appliquez le correctif à l'aide de la commande am git, par exemple.

_git am -3 -k file.patch
_

Voir: man git-format-patch et git-am .

37
kenorb