web-dev-qa-db-fra.com

Quelle est la différence entre git stash save et git stash push?

Quand devrais-je utiliser git stash save au lieu de git stash Push et vice versa?

46
David Burson

git stash save accepte un seul argument sans option - le message de dissimulation.

git stash Push accepte le message avec l’option -m et accepte une liste de fichiers à stocker en tant qu'arguments.

39
phd

Pour être clair, à partir de Git 2.15/2.16 (T1 2018), git stash save est obsolète en faveur de git stash Push (bien que git stash save est toujours disponible pour le moment).

Voir commit c0c0c82 , commit fd2ebf1 , commit db37745 (22 oct 2017) par Thomas Gummerer (tgummerer) .
(Fusionnée par Junio ​​C Hamano - gitster - dans commit 40f129 , 06 nov. 2017)

stash: mark "git stash save "obsolète dans la page de manuel

'git stash Push 'corrige une verrue historique dans l'interface de' git stash save '.
As 'git stash Push 'a toutes les fonctionnalités de' git stash save ', avec une interface utilisateur plus agréable, plus cohérente et obsolète' git stash save '.

stash: supprime maintenant l'aide superfluos pour "stash Push "

Avec le 'git stash save 'interface, il était facilement possible pour les utilisateurs d’ajouter un message commençant par "-", lequel 'git stash save 'serait interprété comme un argument de ligne de commande et échouerait.
Dans ce cas, nous avons ajouté une aide supplémentaire sur la création d’une réserve avec un message commençant par "- ".

Pour 'stash Push ', les messages sont passés avec le -m _ drapeau, évitant ce piège potentiel.
Maintenant seulement les pathspecs commençant par "- "devrait être distingué des paramètres de ligne de commande en utilisant" -- --<pathspec> ".
Ceci est assez courant dans l'interface de ligne de commande git et nous n'essayons pas de deviner ce que les utilisateurs voulaient dans les autres cas.

Comme cette manière de passer pathspecs est assez courante dans d'autres commandes git, et que nous n'y fournissons aucune aide supplémentaire, faisons de même dans le message d'erreur pour 'git stash Push '.


Avec Git 2.18 (T2 2018), l’achèvement de la ligne de commande (dans contrib/) a appris que "git stash save "est obsolète (" git stash Push "est l’orthographe préférée dans le nouveau monde) et ne l’offre pas comme candidat à l’achèvement lorsque" git stash Push" peut être.

Voir commit df70b19 , commit 0eb5a4f (19 avril 2018) par Thomas Gummerer (tgummerer) .
(Fusionné par Junio ​​C Hamano - gitster - dans commit 79d92b1 , 8 mai 2018)

completion: make stash -p et alias pour stash Push -p

Nous définissons 'git stash -p 'comme alias pour' git stash Push -p 'dans la page de manuel. Faites la même chose dans le script d'achèvement, afin que toutes les options pouvant être données à 'git stash Push 'sont en cours d’achèvement lorsque l’utilisateur utilise' git stash -p --<tab> '.
Actuellement, la seule option supplémentaire que l'utilisateur obtiendra est '--message ', mais il y en aura peut-être plus dans le futur.

29
VonC