stash - ignorar cambios git
git: cambia de rama e ignora cualquier cambio sin comprometer (9)
Cierre el terminal, elimine la carpeta donde está su proyecto, luego vuelva a clonar su proyecto y listo.
Estaba trabajando en una rama de git y estaba listo para confirmar mis cambios, así que hice una confirmación con un mensaje de confirmación útil. Entonces, distraídamente, hice cambios menores en el código que no vale la pena mantener. Ahora quiero cambiar de ramas, pero git me da,
error: tienes cambios locales en "X"; No se pueden cambiar las ramas.
Pensé que podía cambiar de sucursal sin comprometerme. Si es así, ¿cómo puedo configurar esto? Si no, ¿cómo salgo de este problema? Quiero ignorar los cambios menores sin comprometerme y solo cambiar ramas.
Necesitas un estado limpio para cambiar ramas. La verificación de sucursales solo se permitirá si no afecta a los ''archivos sucios'' (como lo señala Charles Bailey en los comentarios).
De lo contrario, deberías:
- stash su cambio actual o
-
reset --hard HEAD
(si no te importa perder esos cambios menores) o -
checkout -f
(Al cambiar de rama, proceda incluso si el índice o el árbol de trabajo difieren de HEAD. Esto se utiliza para eliminar los cambios locales).
Ninguna de estas respuestas me ayudó porque todavía tenía archivos sin seguimiento incluso después de restablecer y esconder. Tenía que hacer:
git reset --hard HEAD
git clean -d -f
Seguir,
$: git checkout -f
$: git checkout next_branch
Si ha realizado cambios en los archivos que Git también necesita cambiar al cambiar de sucursal, no se lo permitirá. Para descartar cambios de trabajo, use:
git reset --hard HEAD
Entonces, podrás cambiar ramas.
Si quieres descartar los cambios,
git checkout -- <file>
git checkout branch
Si quieres mantener los cambios,
git stash save
git checkout branch
git stash pop
Tenga en cuenta que si ha fusionado sucursales remotas o tiene confirmaciones locales y desea volver a la HEAD remota, debe hacer:
git reset --hard origin/HEAD
HEAD
solo se referirá solo a la confirmación / combinación local; varias veces he olvidado que al reiniciar y terminar con "su repositorio tiene X confirmaciones por delante ..." cuando tenía la intención de detener TODOS los cambios / confirmaciones y regresar al control remoto rama.
bueno, deberia ser
git stash save
git checkout branch
// do something
git checkout oldbranch
git stash pop
cambiando a una nueva sucursal perdiendo cambios:
git checkout -b YOUR_NEW_BRANCH_NAME --force
cambiando a una rama existente perdiendo cambios:
git checkout YOUR_BRANCH --force