web-dev-qa-db-fra.com

Git Shelve vs Stash

Je ne connais pas très bien l'aspect shelve de Git. Si stash est utilisé pour mettre de côté un travail inachevé qu'est-ce que shelve alors? Pour quoi l'utiliseriez-vous?

205
Edgar Martinez

_git shelve_ n'existe pas dans Git.

Seulement git stash :

  • lorsque vous souhaitez enregistrer l'état actuel du répertoire de travail et de l'index, mais que vous souhaitez revenir à un répertoire de travail vierge.
  • qui enregistre vos modifications locales et rétablit le répertoire de travail pour qu'il corresponde au commit HEAD.

Vous aviez un vieux projet de 2008 git shelve pour isoler les modifications dans une branche, mais cela ne serait pas très utile de nos jours.

Comme indiqué dans la section dialogue Intellij IDEA> , la fonctionnalité " shelving and unshelving " n'est pas liée à un VCS (outil Système de contrôle de version) mais au IDE lui-même, pour stocker temporairement les modifications en attente que vous n'avez pas encore validées dans la liste des modifications.

Notez que depuis Git 2.13 (T2 2017), vous pouvez maintenant également stocker des fichiers individuels .

200
VonC

Lors de l’utilisation des IDE JetBrains avec Git, "les actions de stockage caché et non stocké sont prises en charge en plus des opérations de stockage et de démontage. Ces fonctionnalités ont beaucoup en commun; la principale différence est la manière dont les correctifs sont générés et appliqués. Shelve peut fonctionner avec des fichiers individuels Stash ne peut fonctionner qu'avec plusieurs fichiers modifiés à la fois. Voici quelques plus de détails sur les différences entre eux. "

171
Yekver

En plus des réponses précédentes, il y a une remarque importante pour moi:

shelve est une fonctionnalité des produits JetBrains (telle que WebStorm, PhpStorm, PyCharm, etc.). Il place les fichiers en attente dans le répertoire .idea/shelf.

stash est l'une des options git. Il place les fichiers cachés dans le répertoire .git.

48
valex