Guarde los cambios mientras mantiene los cambios en el directorio de trabajo en Git
¿Hay un comando git stash
que guarde sus cambios, pero también los mantenga en el directorio de trabajo? Así que básicamente un git stash; git stash apply
en un paso?
4 answers
Por si sirve de algo, otra forma de hacer esto es organizar los cambios que desea mantener, y luego guardar todo usando --keep-index
:
$ git add modified-file.txt
$ git stash save --keep-index
Los comandos anteriores esconderán todo, incluido modified-file.txt
, pero también dejarán ese archivo preparado y en su directorio de trabajo.
De la documentación oficial de Git del Kernel de Linux para git stash
:
Si se utiliza la opción
--keep-index
, todos los cambios ya añadidos al índice quedan intactos.
git stash
y luego git stash apply
(git stash && git stash apply
) almacenará los archivos y aplicará el almacenamiento inmediatamente después de él. Así que después de todo, tendrá sus cambios en el alijo y en el dir de trabajo.
Puede crear un alias si lo desea en una sola pieza. Solo pon algo como esto a ~/.gitconfig
:
[alias]
sta = "!git stash && git stash apply"
El inconveniente de este enfoque es que todos los archivos se almacenan y se recrean. Esto significa que las marcas de tiempo en los archivos en cuestión se cambiarán. (Causando que Emacs se queje cuando intento guardar el archivo si lo abro antes hice el git sta
, y puede causar reconstrucciones innecesarias si estás usando make
o amigos.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-29 15:31:35
Una pequeña mejora en la respuesta que en la práctica puede probablemente utilizar.
$ git add modified-file.txt
(OR $ git add . ---- for all modified file)
$ git stash save --keep-index "Your Comment"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-01 09:43:52
Hay un truco que puede ayudarte, no stash' cosa pero FWIW:
git add -A
git commit -m "this is what's called stashing" (create new stash commit)
git tag stash (mark the commit with 'stash' tag)
git reset HEAD~ (Now go back to where you've left with your working dir intact)
Así que ahora tienes un stash etiquetado de confirmación a tu disposición, no es posible hacer un git stash pop
de todos modos, pero puedes hacer cosas como crear parches o restablecer archivos, etc. a partir de ahí, sus archivos dir de trabajo también se dejan intactos por cierto.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-22 00:42:09