163 votes

Comment puis-je formater le patch avec ce que j'ai mis de côté ?

Dans git, je stocke mes modifications. Est-il possible de créer un patch avec ce que je cache ? Et ensuite appliquer ce patch dans un autre dépôt (celui de mon collègue) ?

Lo sé. git format-patch -1 Mais je pense que c'est pour ce que j'ai commis. Mais je cherche la même chose pour les changements que j'ai mis de côté.

Et comment puis-je appliquer un correctif dans un autre dépôt ?

194voto

Greg Hewgill Points 356191

Bien sûr, git stash show soutient cela :

git stash show -p

Utilisez donc

git stash list

pour connaître le numéro de la réserve que vous souhaitez exporter en tant que patch, puis

git stash show -p stash@{<number>} > <name>.patch

pour l'exporter.

Par exemple :

git stash show -p stash@{3} > third_stash.patch

1 votes

J'ai une question connexe concernant l'application d'un correctif. Disons que mon correctif touche plusieurs fichiers. Existe-t-il un moyen d'appliquer le correctif de manière interactive ? Choisir les fichiers du correctif sur lesquels je dois appliquer le correctif ? Est-ce possible ?

1 votes

@silverburgh : J'ai jeté un coup d'œil rapide sur man patch et je n'ai pas vu d'options pour l'application interactive des correctifs. Cependant, comme les fichiers de correctifs sont eux-mêmes des fichiers texte, il suffit généralement d'éditer le correctif dans un éditeur de texte pour en découper les parties pertinentes à appliquer avec la commande patch . Alternativement, si vous appliquez le correctif dans un autre dépôt Git, vous pouvez l'appliquer en totalité et ensuite sélectivement git checkout que vous ne souhaitiez pas modifier ( git checkout avec un nom de fichier supprime les modifications non gérées).

1 votes

@silverburgh vous pouvez restreindre l'ensemble des fichiers patchés en utilisant les paramètres "--exclude" et "--include" de git apply.

78voto

calvinf Points 2010

Cette réponse fournit des informations sur l'enregistrement du correctif et son application à l'endroit où vous souhaitez l'utiliser.

Pour conserver le résultat dans un fichier :

 git stash show -p --color=never > my-patch-name.patch

Le patch Verify a l'air bien :

git apply --stat my-patch-name.patch

Vérifier qu'il n'y a pas d'erreur :

git apply --check my-patch-name.patch

Appliquer le correctif

git apply my-patch-name.patch

17voto

peritus Points 1262

Utilisation

$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter

pour obtenir une liste de vos affaires récemment cachées. Git crée en fait des objets commit lors de la mise en cache.

Ce sont des engagements comme les autres. Vous pouvez les consulter dans une branche :

$> git checkout -b with_stash stash@{0}

Vous pouvez ensuite publier cette branche et vos collègues peuvent fusionner ou prélever ce commit.

17voto

Davide Guerri Points 41

Les solutions ci-dessus ne fonctionnent pas pour les données binaires. Les solutions suivantes les prennent en charge :

git stash show stash@{0} -p --binary

Éditer

Note : Je voulais juste ajouter un commentaire aux réponses ci-dessus mais ma réputation n'est pas suffisante.

4voto

stucash Points 390

Je crois que c'est l'une des nouveautés de Git. Vous n'avez plus besoin de patcher les modifications que vous avez cachées. Vous pouvez simplement appliquer vos modifications cachées sur une branche à une autre.

Disons que sur la branche A, vous avez stocké des modifications, appelées stash@{1}.

vous passez maintenant à la branche B. vous pouvez simplement le faire :

$git stash apply stash@{1}

cela s'applique aux changements de la branche A vers la branche B.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X