git - tag - Cómo realizar el equivalente a TFS de ''Deshacer cambios pendientes''
ignorar cambios git (4)
¿Cómo realizo el equivalente de TFS ''Deshacer cambios pendientes'' en Git, en uno o varios archivos?
Eso básicamente significa hacer estos pasos:
- Deshacer cambios en el disco
- Restableciendo cualquier cambio que Git haya descubierto.
- Obteniendo los últimos cambios en el archivo de Git
Sería bueno saber las diferencias (si existen) en los comandos para hacer esto si (1) lo ha cambiado en el disco, sin agregarlo , pero también cuando (2) ha ejecutado el comando agregar y por una bonificación, (3) incluso cuando haya confirmado el cambio .
-
git checkout [path]
o (repo completo)git reset --hard HEAD
-
git reset [path]
seguido degit checkout [path]
-
git reset --hard [commit]
para restaurar el estado del repositorio en[commit]
, que debe ser un tree-ish
Este comando deshará los cambios locales y los restaurará a las versiones actuales en el repositorio:
git reset --hard
Puede volver a su último compromiso válido emitiendo:
git reset --hard HEAD
Si solo desea restaurar un solo archivo, use git checkout en su lugar:
git checkout -- file_name.extension
git checkout HEAD file_name.extension
Mi equivalente a TFS undo
en Git con Eclipse es simplemente hacer clic con el botón derecho en el archivo y seleccionar Replace with
-> HEAD Revision
(o la versión que desee).
Para 1 y 2, todo lo que necesitas hacer es:
git stash -u #same effect as git reset --hard, but can be undone
Esto tirará cualquier cambio. Ten cuidado si usas reset
. Lea sobre la manipulación del índice y las permutaciones de las opciones duras, blandas y mixtas con el restablecimiento y la verificación. El libro de progreso explica esto en detalle: http://progit.org/2011/07/11/reset.html
Para 3,
git reset --hard HEAD^
pero sería mejor emitir un git stash -u
antes de esto, en caso de que tenga cambios pendientes.
Esto restablecerá la rama actual al padre de la confirmación actual. Busque "tree-ish" en línea. ^ y ~ N después de una referencia le permitirán señalar los puntos alcanzables en el historial de esa referencia. Para entender cómo se rastrea la historia en git, "Git para informáticos" explica bien el Directed Acyclic Graph: http://eagain.net/articles/git-for-computer-scientists/
Para obtener archivos individuales del estado de la confirmación actual (es decir, descartar cambios), puede utilizar la extracción
git checkout HEAD -- <a list of files>
Si emitió el último comando de reinicio anterior por error, no está en problemas. Git realiza un seguimiento de dónde se utilizan las ramas para apuntar en el reflog.
git reflog
Te enumeraré la historia. Puedes ver en esa salida cómo hacer referencia a cada uno, así que:
git reset --hard HEAD@{1}
restablecerá la rama a donde solía haber 1 cambio antes.
Para agregar, si desea borrar los archivos ignorados y los archivos sin seguimiento, puede limpiar con esto:
git clean -xdf