Git Stash vs Shelve en IntelliJ IDEA/Netbeans

Resuelto Subtubes asked hace 9 años • 6 respuestas

No estoy muy familiarizado con el shelveaspecto de Git (EDITAR: no es un aspecto de Git, sino más bien una característica de IntelliJ IDEA shelve).

Si stashse utiliza para dejar de lado trabajos inacabados ¿qué es shelveentonces? ¿Para qué lo usarías?

Por ejemplo, en Actualizar proyecto (desde el menú VCS)

Opción Actualizar proyecto

uno obtendrá (en IntelliJ IDEA 2019.2)

Ventana de solicitud de actualización del proyecto

Subtubes avatar Jan 18 '15 14:01 Subtubes
Aceptado

git shelveno existe en Git.

Solo git stash:

  • cuando desea registrar el estado actual del directorio de trabajo y el índice, pero desea volver a un directorio de trabajo limpio.
  • lo que guarda sus modificaciones locales y revierte el directorio de trabajo para que coincida con la confirmación HEAD.

Tenías un antiguo proyecto git shelve de 2008 para aislar modificaciones en una rama, pero eso no sería muy útil hoy en día.

Como se documenta en el cuadro de diálogo de estantería de Intellij IDEA , la función " archivar y desarchivar " no está vinculada a un VCS (herramienta del sistema de control de versiones) sino al IDE mismo, para almacenar temporalmente los cambios pendientes que aún no ha confirmado en la lista de cambios.

Tenga en cuenta que desde Git 2.13 (segundo trimestre de 2017), ahora también puede guardar archivos individuales .

VonC avatar Jan 18 '2015 10:01 VonC

Cuando se utilizan los IDE de JetBrains con Git, "se admiten acciones de ocultación y desinstalación además de estantería y desarchivadora. Estas características tienen mucho en común; la principal diferencia está en la forma en que se generan y aplican los parches. Shelve puede operar con archivos individuales o en grupo de archivos, mientras que Stash solo puede operar con un montón de archivos modificados a la vez. Aquí hay más detalles sobre las diferencias entre ellos."

Yekver avatar Apr 04 '2015 22:04 Yekver

Además de las respuestas anteriores, hay una nota importante para mí:

shelvees una característica de los productos JetBrains (como WebStorm, PhpStorm, PyCharm, etc.). Pone archivos archivados en .idea/shelfel directorio.

stashes una de gitopciones. Coloca archivos escondidos en el .gitdirectorio.

valex avatar Aug 01 '2017 10:08 valex

Preferiría archivar los cambios en lugar de guardarlos si no los comparto en ningún otro lugar.

El almacenamiento es una característica de git y no le brinda la opción de seleccionar archivos específicos o cambios dentro de un archivo. Shelving puede hacer eso, pero esta es una característica específica de IDE, no una característica de git:

ingrese la descripción de la imagen aquí

Como puede ver, puedo elegir especificar qué archivos/líneas incluir en mi estantería. Tenga en cuenta que no puedo hacer eso con el almacenamiento oculto.

Tenga cuidado con el uso de estantes en el IDE que pueden limitar la portabilidad de sus parches porque esos cambios no se almacenan en una carpeta .git.

Algunos enlaces útiles:

  • https://www.jetbrains.com/help/idea/shelving-and-unshelving-changes.html
  • https://www.jetbrains.com/help/idea/work-on-several-features-simultanefully.html
Hamza Belmellouki avatar Mar 30 '2020 01:03 Hamza Belmellouki

Shelf es una función de JetBrains, mientras que Stash es una función de Git para el mismo trabajo. Puede cambiar a una rama diferente sin comprometerse ni perder trabajo utilizando cualquiera de las funciones. Mi experiencia personal es usar Shelf.

O_K avatar Aug 03 '2020 10:08 O_K