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
?
git stash pop
jette la stash (la plus haute, par défaut) après son application, alors que git stash apply
le 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
.
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/
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.
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.
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
classpop()
etpeek()
, où pop modifie le haut par des décréments (top = top-1) maispeek()
ne peut Obtenez l'élément du haut.
Dans git
stash 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 quegit pop
s'applique et supprime les modifications de la zonestash
.