Question Différence entre git stash pop et git stash


J'ai utilisé git stash pop pour un certain temps. J'ai récemment découvert le git stash apply commander. Quand 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?


593
2018-03-08 03:14


origine


Réponses:


git stash pop  jette le (le plus haut, par défaut) cachette après l'application, alors que git stash apply  le laisse dans la liste de dissimulation pour réutilisation ultérieure possible (ou vous pouvez ensuite git stash drop il).

Cela arrive à moins qu'il n'y ait des conflits après git stash pop, dans ce cas, il ne sera pas enlever la cachette, se comporter exactement comme git stash apply.

Une autre façon de le regarder: git stash pop est git stash apply && git stash drop.


927
2018-03-08 03:15



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.

Par exemple, dites que vos modifications cachées entrent en conflit avec d'autres changements que vous avez effectués depuis que vous avez créé la cachette. La pop et l'application vont déclencher utilement le mode de résolution des conflits de fusion, vous permettant ainsi de résoudre de tels conflits ... et aucun ne se débarrassera de la cachette, même si vous attendez peut-être un pop. Puisque beaucoup de gens s'attendent à ce que les cachettes soient juste une pile simple, cela les amène souvent à sauter la même cachette accidentellement plus tard parce qu'ils pensaient qu'elle était partie.

Lien http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/


64
2017-09-23 20:42



git stash pop applique l'élément caché supérieur et le supprime de la pile. git stash apply fait la même chose, mais le laisse dans la cachette.


39
2018-03-08 03:16



Le voir en action pourrait vous aider à mieux comprendre la différence.

En supposant que nous travaillons sur master branche et avoir un fichier hello.txt qui contient la chaîne "Hello".

Modifions le fichier et ajoutons-y une chaîne "world". Maintenant, vous voulez passer à une branche différente pour corriger un bug mineur que vous venez de trouver, vous devez donc stash vos changements:

git stash

Vous avez déménagé dans l'autre branche, corrigé le bug et maintenant vous êtes prêt à continuer à travailler sur votre master branche, de sorte que vous pop les changements:

git stash pop

Maintenant, si vous essayez d'examiner le contenu caché, vous obtiendrez:

$ git stash show -p
No stash found.

Cependant, si vous utilisez git stash apply à la place, vous obtiendrez le contenu caché mais vous le garderez é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

Alors pop est comme la pile de la pile - il supprime en fait l'élément une fois qu'il est sorti, tandis que apply est plus comme coup d'oeil.


17
2017-11-30 12:27