¿Cuál es la diferencia entre Shelve de IntelliJ y Git stash?

99

IntelliJ admite git stashes, así como su propio comando shelve integrado. Estos parecen ser casi idénticos en propósito y utilidad. ¿Cuál es la diferencia entre ellos?

Daniel Compton
fuente
2
Posible duplicado de Git Shelve vs Stash
Vadzim

Respuestas:

66

De la documentación de IntelliJ :

En la integración de Git, además de colocar y quitar estanterías, se admiten, respectivamente, "esconder" y "deshacer". Estas características tienen mucho en común, la única diferencia está en la forma en que se generan y aplican los parches.

  • Los parches con cambios ocultos son generados por el propio Git. Para aplicarlos más tarde, no necesita IntelliJ IDEA.
  • IntelliJ IDEA genera los parches con cambios archivados. Normalmente, también se aplican a través del IDE. También es posible aplicar cambios archivados fuera de IntelliJ IDEA, pero requiere pasos adicionales.
Daniel Compton
fuente
21
Bueno, entonces, ¿cuáles son las ventajas de la estantería, ya que simplemente es "menos compatible" con git simple?
MaxiWheat
17
Parece que las estanterías serían útiles si usara un VCS que no tuviera una función de estilo de almacenamiento nativo. Si usa git, no puedo ver ningún beneficio real.
Daniel Compton
4
Los 'beneficios reales' se enumeran en la respuesta de id.bobr. Lo principal para mí es poder elegir qué archivos / fragmentos guardar, al igual que cuando realizo un compromiso.
Martin Melka
Desde Git 2.13, es posible guardar archivos individuales con git stash push.
Deric Lima
45

Son bastante similares excepto:

  • No puede usar estanterías fuera del IDE, porque es la función de Intellij.
  • Git stash solo funciona con todo el directorio de trabajo y el índice. La estantería de IntelliJ puede funcionar con archivos individuales y listas de cambios (otra característica de IntelliJ). Como puede ver, por ejemplo, aquí , a veces es necesario.
  • Idea tiene un mejor soporte integrado para estantes. Trabajar con git stash es más sencillo. En particular, puede archivar / quitar los cambios o revisar archivos archivados desde la ventana de la herramienta de control de versiones.

Además, en mi humilde opinión, shelve funciona un poco más rápido, especialmente en un gran proyecto, cuando se cambiaron muchos archivos.

Consulte la documentación para obtener más información.

id.bobr
fuente
Encuentro que hacer clic con el botón derecho en un inmutable para archivarlo rápidamente es muy útil. Como usted alude, lo encuentro un poco más rápido.
vikingsteve
3
"Git stash solo funciona con todo el directorio de trabajo y el índice" - esto es incorrecto. Git Stash también puede almacenar archivos y carpetas individuales, por ejemplo:git stash -- foo/bar.txt
Chaoz
20

Una clara ventaja que tiene Shelve de Intellij sobre el alijo de Git es que, al usar Shelve, puede guardar los cambios que pertenecen a varios repositorios en una lista de cambios. Al usar el alijo, necesitaría guardar / desechar en cada repositorio individualmente. Esto es muy útil en un proyecto grande con múltiples módulos (cada uno con su propio repositorio) donde el trabajo de una función particular puede abarcar varios módulos (y por lo tanto, varios repositorios)

riyasvaliya
fuente
0

Esto es lo que dice la documentación

Los cambios de almacenamiento son muy similares a los estantes. La única diferencia está en la forma en que se generan y aplican los parches. Las reservas son generadas por Git y se pueden aplicar desde dentro o fuera de IntelliJ IDEA. IntelliJ IDEA genera parches con cambios archivados y también se aplican a través del IDE. Además, el almacenamiento implica todos los cambios no comprometidos, mientras que cuando coloca los cambios en un estante, puede seleccionar algunos de los cambios locales en lugar de archivarlos todos.

Sagar
fuente