J’utilise git stash pop
depuis un certain temps. J’ai récemment découvert la commande git stash apply
. Lorsque je l’ai essayé, il semblait fonctionner de la même manière que git stash pop
.
Quelle est la différence entre git stash pop
et git stash apply
?
git stash pop
supprime le cache (par défaut) après l’avoir appliqué, alors que git stash apply
laisse dans la liste de stockage pour une réutilisation ultérieure possible (ou vous pouvez ensuite le git stash drop
).
Cela se produit à moins qu’il n’y ait des conflits après le git stash pop
, dans ce cas, il n’enlèvera pas le stash, se comportant exactement comme git stash apply
.
Une autre façon de voir les choses: git stash pop
est git stash apply && git stash drop
.
Vous avez ce lien utile qui indique la différence, comme l’a déclaré John Zwinck et un inconvénient de Git Stash Pop.
Supposons, par exemple, que vos modifications cachées entrent en conflit avec d’autres modifications apscopes depuis la création du cache. Les deux pop et apply déclencheront utilement le mode de résolution des conflits de fusion, ce qui vous permettra de résoudre facilement ces conflits… et aucun ne se débarrassera de la réserve, même si vous vous attendez peut-être à de la pop. Étant donné que beaucoup de gens s’attendent à ce que les caches ne soient qu’une simple stack, cela les amène souvent à jeter accidentellement le même cache par la suite, car ils pensaient que c’était parti.
Lien http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
git stash pop
applique l’élément supérieur et le supprime de la stack. git stash apply
fait de même, mais le laisse dans la stack de réserve.
Le voir en action peut vous aider à mieux comprendre la différence.
En supposant que nous travaillons sur master
twig principale et que nous ayons un fichier hello.txt
contenant la chaîne “Hello”.
Modifions le fichier et y ajoutons la chaîne “world”. Maintenant, vous voulez passer à une twig différente pour corriger un bug mineur que vous venez de trouver, vous devez donc stash
vos modifications:
git stash
Vous êtes passé à l’autre twig, vous avez corrigé le bogue et maintenant vous êtes prêt à continuer à travailler sur votre twig master
.
git stash pop
Maintenant, si vous essayez de revoir le contenu de la réserve, vous obtiendrez:
$ git stash show -p No stash found.
Cependant, si vous utilisez git stash apply
, vous obtiendrez le contenu caché, mais vous le conserverez également:
$ git stash show -p diff --git a/hello.txt b/hello.txt index e965047..802992c 100644 --- a/hello.txt +++ b/hello.txt @@ -1 +1 @@ -Hello +Hello world
Donc, la pop
est comme la pop de la stack – elle supprime en fait l’élément une fois qu’il a sauté, alors qu’appliquer ressemble plus à un coup d’oeil .