stash que meaning hace crear and git git-stash

que - ¿Cuál es el propósito de git stash create y git stash store?



git stash pop que hace (2)

De la documentación en git-scm , hay dos comandos de git stash que mencionan relevancia para los scripts, pero no para uso general:

crear

Cree un alijo (que es un objeto de confirmación normal) y devuelva su nombre de objeto, sin almacenarlo en ningún lugar en el espacio de nombres de referencia. Esto pretende ser útil para los scripts. Probablemente no es el comando que quieres usar; ver "guardar" arriba.

almacenar

Almacene un alijo determinado creado a través de git stash create (que es un commit de combinación colgante) en el ref del alijo, actualizando el alboroto del alijo. Esto pretende ser útil para los scripts. Probablemente no es el comando que quieres usar; ver "guardar" arriba.

Suponiendo que estamos considerando el contexto de los scripts automatizados, ¿qué ventajas git stash create git stash store y git stash store sobre el habitual git stash save and friends?


Desafortunadamente, el buen ejemplo que Andrew mostró arriba no funciona en todos los casos, porque:

  • Si hay cambios locales, entonces git stash create creará una confirmación sin referencia, pero en realidad no borrará los cambios locales.

  • Si no hay cambios locales, entonces no se creará ningún compromiso (como señaló BlackVegetable). En ese caso no deberíamos apply al final.

  • (Y menor: Andrew olvidó mantener y usar la ID de confirmación producida por create ).

Con eso en mente, me parece que el uso debería ser así:

# Save the local changes, keep a reference to them, and clear them stashed_commit="$(git stash create)" git reset --hard # Do your thing git fetch git rebase # If there were local changes, then restore them if [ -n "${stashed_commit}" ] then git stash apply "${stashed_commit}" fi

Difícil de decir lo menos!

Ay. Sería mucho más sencillo si pudiera simplemente git stash save --allow-empty en la parte superior, y el git stash pop en la parte inferior.

Me encantaría estar equivocado. ¡Por favor corrigeme!


Puede usar git stash create cuando está escribiendo scripts que deben ocultarse como un detalle de implementación y no desea perturbar el reflog de ocultación del usuario.

Dependiendo de lo que suceda a continuación, podría (en el caso de un error, por ejemplo) decidir que, después de todo, desea perturbar la acumulación de objetos ocultos, en cuyo punto puede usar git stash store .

Obviamente, se puede implementar un alijo regular en términos de create luego store , pero también puedo imaginar que se use en un comando hipotético de update-branch que haga algo como esto:

git stash create git fetch git rebase git stash apply