Guardar solo cambios no escalonados en Git
Me gustaría hacer el siguiente flujo de trabajo:
- Añade cambios al escenario.
- Guarda todos los demás cambios que no fueron preparados.
- Hacer algunas cosas con las cosas en stage (es decir, construir, ejecutar pruebas, etc.)
- Aplica el alijo.
¿Hay alguna manera de hacer el paso 2?
Ejemplo
echo "123" > foo
git add foo # Assumes this is a git directory
echo "456" >> foo
git stash
cat foo # Should yield 123
6 answers
git stash save
tiene una opción --keep-index
que hace exactamente lo que necesita.
Entonces, ejecuta git stash save --keep-index
.
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
2011-10-04 16:10:50
git stash save --keep-index
También, Re:
¿Por qué no confirmar sus cambios después de organizarlos? - Shin
R: Debido a que siempre debe verificar el código probado:) Eso significa que necesita ejecutar las pruebas con solo los cambios que está a punto de confirmar
Todo esto aparte del hecho de que, por supuesto, como programador experimentado, tienes el impulso innato de probar y revisar solo esos cambios {solo en parte bromeando
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
2011-10-04 16:13:25
Esto se puede hacer en 3 pasos: guardar los cambios por etapas, guardar todo lo demás, restaurar el índice con los cambios por etapas. Que es básicamente:
git commit -m "~~~ saved index ~~~"
git stash save -u
git reset --soft HEAD~1
Esto hará exactamente lo que quieras.
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-25 10:13:12
Con git version 2.7.4
usted puede hacer:
git stash save --patch
El git
le pedirá que agregue o no sus cambios en el alijo.
Y luego solo respondes y
o n
Puede restaurar el directorio de trabajo como siempre lo hace:
git stash pop
O, si desea mantener los cambios guardados en el alijo:
git stash apply
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
2017-06-29 18:36:20
Extendiendo las respuestas anteriores, a veces tengo un conjunto complejo de cambios preparados, pero deseo confirmar primero un cambio separado. Por ejemplo, es posible que haya detectado un error o código incorrecto que me gustaría corregir antes de mis cambios por etapas. Una posible ruta a seguir es esta:
Primero guarda todo, pero deja los cambios por etapas intactos
Save git stash save keep keep-index [include include-untracked]
Ahora también guarda los cambios por etapas por separado
Save git stash save
Hacer cambios para fix; y probar; confirmarlos:
Git git add [interactive interactive] [patch patch]
Git git commit-m"fix..."
Ahora restaura los cambios previamente preparados:
Pop git stash pop
Resuelve cualquier conflicto, y ten en cuenta que si hubiera conflictos, git habrá aplicado pero no ha eliminado esa entrada del alijo superior.
(... A continuación, confirmar los cambios por etapas, y restaurar el alijo de todos los demás cambios, y continuar ...)
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-01-21 13:10:39
Otro consejo, relacionado con la pregunta:
Cuando se esconden efectivamente los cambios no escalonados usando
Save git stash save keep keep-index
Es posible que desee darle un mensaje al alijo, para que cuando haga un git stash list
sea más obvio lo que ha guardado antes, especialmente si sigue esa operación de alijo con más guardadas. Por ejemplo
Save git stash save keep keep-index"cambios aún no realizados"
(aunque en realidad lo hace contener todos los cambios como se indica en otras respuestas).
Por ejemplo, lo anterior podría ser seguido inmediatamente por:
Save git stash save "staged changes for feature X"
Tenga cuidado, sin embargo, que no puede luego usar
Apply git stash apply "stash@{1}" # # # {no hace exactamente lo que podrías querer
Para restaurar solo los cambios no escalonados.
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-01-21 16:02:15