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?
Sûr, git stash show
prend en charge ceci:
git stash show -p
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
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.
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.
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.