Quelle est la différence entre Shelve d'IntelliJ et Git stash?

99

IntelliJ prend en charge git stashes ainsi que sa propre commande shelve intégrée. Celles-ci semblent être presque identiques dans leur but et leur utilité. Quelle est la différence entre eux?

Daniel Compton
la source
2
Double possible de Git Shelve vs Stash
Vadzim

Réponses:

66

À partir de la documentation IntelliJ :

Dans l'intégration Git, en plus de la mise en rayon et du déblocage, le "stashing" et le "unstashing" sont pris en charge respectivement. Ces fonctionnalités ont beaucoup en commun, la seule différence réside dans la manière dont les correctifs sont générés et appliqués.

  • Les correctifs avec des modifications cachées sont générés par Git lui-même. Pour les appliquer ultérieurement, vous n'avez pas besoin d'IntelliJ IDEA.
  • Les correctifs avec des modifications mises en attente sont générés par IntelliJ IDEA. Normalement, ils sont également appliqués via l'EDI. L'application de modifications mises en attente en dehors d'IntelliJ IDEA est également possible mais nécessite des étapes supplémentaires.
Daniel Compton
la source
21
Eh bien, alors quels sont les avantages du rayonnage car il est simplement "moins compatible" avec git ordinaire?
MaxiWheat
17
Il semble que le rayonnage serait utile si vous utilisiez un VCS qui n'avait pas de fonction de style de cache natif. Si vous utilisez git, je ne vois aucun avantage réel.
Daniel Compton
4
Les «avantages réels» sont répertoriés dans la réponse par id.bobr. L'essentiel pour moi est de pouvoir choisir les fichiers / blocs à cacher, un peu comme lors de la validation.
Martin Melka
Depuis Git 2.13, il est possible de cacher des fichiers individuels avec git stash push.
Deric Lima le
45

Ils sont assez similaires sauf:

  • Vous ne pouvez pas utiliser shelve en dehors de l'EDI, car c'est la fonctionnalité d'Intellij.
  • Git stash fonctionne uniquement avec l'intégralité du répertoire de travail et de l'index. Le shelve d'IntelliJ peut fonctionner avec des fichiers individuels et des listes de modifications (une autre fonctionnalité d'IntelliJ). Comme vous pouvez le voir, par exemple, ici , parfois c'est nécessaire.
  • Idea a un meilleur support intégré pour les étagères. Travailler avec git stash est plus simple. En particulier, vous pouvez suspendre \ unshelve vos modifications ou revoir les fichiers mis en attente depuis la fenêtre de l'outil de contrôle de version.

De plus, à mon humble avis, shelve fonctionne un peu plus vite, en particulier dans un grand projet, lorsque de nombreux fichiers ont été modifiés.

Consultez la documentation pour plus d'informations.

id.bobr
la source
Je trouve que faire un clic droit sur un immuable pour le ranger rapidement est très utile. Comme vous le dites, je trouve cela un peu plus rapide.
vikingsteve
3
"Git stash ne fonctionne qu'avec l'intégralité du répertoire de travail et de l'index" - c'est faux. Git stash peut également cacher des fichiers et des dossiers individuels - par exemple:git stash -- foo/bar.txt
Chaoz
20

Un avantage distinct qu'Intellij's Shelve a par rapport à la cachette de Git est que, en utilisant Shelve, vous pouvez enregistrer les modifications appartenant à plusieurs dépôts dans une seule liste de modifications. En utilisant stash, vous devez stocker / désinstaller individuellement chaque dépôt. Ceci est très utile dans un grand projet avec plusieurs modules (chacun ayant son propre dépôt) où un travail de fonctionnalité particulière peut recouper plusieurs modules (et donc plusieurs dépôts)

riyasvaliya
la source
0

Voici ce que dit la documentation

Le stockage des changements est très similaire au rayonnage. La seule différence réside dans la manière dont les patchs sont générés et appliqués. Les stashes sont générés par Git et peuvent être appliqués à partir d'IntelliJ IDEA ou de l'extérieur. Les correctifs avec des modifications mises en attente sont générés par IntelliJ IDEA et sont également appliqués via l'IDE. En outre, le stockage implique toutes les modifications non validées, tandis que lorsque vous placez des modifications dans une étagère, vous pouvez sélectionner certaines des modifications locales au lieu de toutes les mettre en attente.

Sagar
la source