web-dev-qa-db-fra.com

Comment formater le patch avec ce que je cache

En git, je cache mes modifications. Est-il possible que je puisse créer un patch avec ce que je cache? Et appliquer ce correctif dans un autre référentiel (mon collègue)?

Je connais 'git format-patch -1' mais je pense que c'est pour ce que j'ai commis. Mais je recherche la même chose pour les changements que j'ai cachés?

Et comment puis-je appliquer un correctif dans un autre référentiel?

119
silverburgh

Sûr, git stash show prend en charge ceci:

git stash show -p
136
Greg Hewgill

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

Pour ranger la sortie dans un fichier:

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

Vérifiez que le patch est bon:

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

Vérifiez aucune erreur:

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

Appliquer le patch

git apply my-patch-name.patch
51
calvinf

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 stockées. Git crée en fait des objets commit lorsque vous planquez.

Ce sont des commits comme tout le reste. Vous pouvez les consulter dans une succursale:

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

Vous pouvez ensuite publier cette branche et votre collègue peut fusionner ou sélectionner ce commit.

16
peritus

Les solutions ci-dessus ne fonctionneront pas pour les données binaires. Les éléments suivants ajoutent une prise en charge:

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

Modifier

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

11
Davide Guerri

Je pense que cela pourrait être l'une des mises à jour de Git récemment. vous n'avez plus à patcher les modifications que vous avez cachées. vous pouvez simplement appliquer vos modifications cachées sur une branche à une autre.

par exemple, sur la branche A, vous avez caché des modifications, appelées stash @ {1}.

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

$git stash apply stash@{1}

cela applique vos changements de branche A sur la branche B.

2
stucash