Quelle est la différence entre le Shelve D'IntelliJ et git stash?

IntelliJ supporte les git stashes ainsi que sa propre commande shelve. Leur but et leur utilité semblent presque identiques. Quelle est la différence entre eux?

57
demandé sur Daniel Compton 2015-10-07 04:11:21

3 réponses

à Partir de l'Ide documentation :

dans l'intégration Git, en plus des rayonnages et des décollages," stashing "et" unstashing " sont supportés respectivement. Ces caractéristiques ont beaucoup en commun, la seule différence réside dans la façon dont les correctifs sont générés et appliqués.

  • les Patches avec des modifications cachées sont générés par Git lui-même. Pour les appliquer plus tard, vous n'avez pas besoin IntelliJ L'idée.
  • les correctifs avec les changements mis en attente sont générés par IntelliJ IDEA. Normalement, ils sont également appliqués par le biais de L'IDE. L'application des changements de classement en dehors de IntelliJ idée est également possible, mais demande des étapes supplémentaires.
40
répondu Daniel Compton 2015-10-07 01:11:21

ils sont assez similaires sauf:

  • vous ne pouvez pas utiliser shelve en dehors de IDE, parce que C'est la caractéristique D'Intellij.
  • git stash ne fonctionne qu'avec l'ensemble 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 voir, par exemple, ici , parfois il est nécessaire.
  • L'idée a un meilleur support intégré pour les rayonnages. Travailler avec git stash est plus simple. En particulier, vous pouvez shelve\unshelve vos changements ou examiner les fichiers de shelved de la fenêtre de l'outil de contrôle de version.

aussi, IMHO, shelve fonctionne un peu plus vite, surtout dans un grand projet, quand beaucoup de fichiers ont été changés.

voir la documentation pour plus d'informations.

20
répondu id.bobr 2017-05-31 16:43:47

un net avantage que le Shelve D'Intellij a par rapport à la planque de plain Git est qu'en utilisant Shelve, vous pouvez enregistrer des modifications appartenant à plusieurs repos dans une liste de modifications. En utilisant stash, vous devriez stash / unstash dans chaque repo individuellement. Cela est très utile dans un grand projet avec plusieurs modules (chacun ayant son propre repo) où un travail de caractéristique particulière peut couper à travers plusieurs modules (et donc plusieurs repos)

6
répondu riyasvaliya 2017-11-03 21:16:56