web-dev-qa-db-fra.com

La différence entre git stash pop et git stash s'applique

J'utilise git stash pop depuis un certain temps. J'ai récemment découvert la commande git stash apply. Quand j'ai essayé, cela semblait fonctionner de la même façon que git stash pop.

Quelle est la différence entre git stash pop et git stash apply?

832

git stash popjette la stash (la plus haute, par défaut) après son application, alors que git stash applyle laisse dans la liste de stash pour une éventuelle réutilisation ultérieure ( ou vous pouvez alors git stash drop le).

Cela se produit sauf s'il y a des conflits après git stash pop, auquel cas il ne supprimera pas la réserve, le laissant se comporter exactement comme git stash apply.

Une autre façon de voir les choses: git stash pop est git stash apply && git stash drop.

1317
John Zwinck

Vous avez ce lien utile qui indique la différence, comme l'a dit John Zwinck, et un inconvénient de Git Stash Pop.

Par exemple, supposons que vos modifications stockées entrent en conflit avec d’autres modifications que vous avez effectuées depuis la création initiale de votre collection. Pop et Apply déclenchent utilement le mode de résolution des conflits de fusion, ce qui vous permet de résoudre ces conflits de manière ordonnée… et aucun des deux ne se débarrassera de la réserve, même si vous vous attendez peut-être à ce que Pop soit utilisé. Comme beaucoup de gens s'attendent à ce que les cachettes soient simplement une pile, cela les amène souvent à faire éclater la même cachette par la suite, parce qu'elles pensaient que tout était parti.

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

75
briankip

git stash pop applique le premier élément stocké et le supprime de la pile. git stash apply fait la même chose, mais le laisse dans la pile de stash.

53
jchapa

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

En supposant que nous travaillions sur la branche master et que nous ayons un fichier hello.txt contenant la chaîne "Hello".

Modifions le fichier et ajoutons la chaîne "world". Maintenant, vous voulez changer de branche pour corriger un bogue mineur que vous venez de trouver, vous devez donc stash vos modifications:

git stash

Vous avez changé de branche, corrigé le bogue et vous êtes maintenant prêt à continuer à travailler sur votre branche master, de sorte que vous pop les modifications:

git stash pop

Maintenant, si vous essayez de revoir le contenu de la cache, vous obtiendrez:

$ git stash show -p
No stash found.

Cependant, si vous utilisez plutôt git stash apply, vous obtiendrez le contenu masqué 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, pop est semblable au pop de la pile: il supprime l'élément une fois qu'il est sauté, tandis que apply ressemble davantage à peek.

37
Maroun

Git Stash Pop vs apply Fonctionne

Si vous souhaitez appliquer vos principales modifications stockées à la modification actuelle non stockée et supprimer également cette sauvegarde, vous devez choisir git stash pop.

# apply the top stashed changes and delete it from git stash area.
git stash pop  

Mais si vous souhaitez appliquer vos principales modifications stockées à la modification actuelle non effectuée par étapes sans la supprimer, vous devez alors choisir git stash apply.

Remarque: Vous pouvez associer ce cas aux méthodes Stack class pop() et peek(), où pop modifie le haut par des décréments (top = top-1) mais peek() ne peut Obtenez l'élément du haut.

1
Vikrant Kashyap

Dans gitstash est une zone de stockage où les fichiers modifiés actuels peuvent être déplacés.

La zone stash est utile lorsque vous souhaitez extraire certaines modifications du référentiel git et détecter certaines modifications dans certains fichiers communs disponibles dans le référentiel git.

git stash apply //apply the changes without removing stored files from stash area.

git stash pop  // apply the changes as well as remove stored files from stash area.

Remarque: - git apply applique uniquement les modifications de la zone de stockage tandis que git pop s'applique et supprime les modifications de la zone stash.

0
Vikrant Kashyap