Tengo un proyecto en el que ejecuté git init
.
Después de varios commits, hice git status
que me dijo que todo estaba actualizado y no había cambios locales.
Luego hice varios cambios consecutivos y me di cuenta de que quería tirar todo y volver a mi estado original. ¿Este comando lo hará por mí?
git reset --hard HEAD
Si quiere revertir los cambios realizados en su copia de trabajo, haga esto:
git checkout .
Si desea revertir los cambios realizados en el índice (es decir, que ha añadido), haga esto. **Advertencia: esto restablecerá todas sus confirmaciones no empujadas al maestro:
git reset
Si quieres revertir un cambio que has confirmado, haz esto:
git revert <commit 1> <commit 2>
Si desea eliminar los archivos no rastreados (por ejemplo, archivos nuevos, archivos generados):
git clean -f
O directorios no rastreados (por ejemplo, directorios nuevos o generados automáticamente):
git clean -fd
Nota: También es posible que desee ejecutar
git clean -fd
como
git reset --hard
no* eliminará los archivos no rastreados, mientras que git-clean eliminará cualquier archivo del directorio raíz rastreado que no esté bajo seguimiento git. ADVERTENCIA - ¡TENGA CUIDADO CON ESTO! Es útil hacer una prueba con git-clean primero, para ver qué eliminará.
Esto también es especialmente útil cuando se obtiene el mensaje de error
~"performing this command will cause an un-tracked file to be overwritten"
Lo cual puede ocurrir al hacer varias cosas, una de ellas es la actualización de una copia de trabajo cuando usted y su amigo han añadido un nuevo archivo con el mismo nombre, pero él lo ha confirmado en el control de código fuente primero, y no se preocupan por la eliminación de su copia sin seguimiento.
En esta situación, hacer una ejecución en seco también le ayudará a mostrar una lista de archivos que serían sobrescritos.
Busca en git-reflog. Hará una lista de todos los estados que recuerda (por defecto es de 30 días), y puedes simplemente revisar el que quieras. Por ejemplo:
$ git init > /dev/null
$ touch a
$ git add .
$ git commit -m"Add file a" > /dev/null
$ echo 'foo' >> a
$ git commit -a -m"Append foo to a" > /dev/null
$ for i in b c d e; do echo $i >>a; git commit -a -m"Append $i to a" ;done > /dev/null
$ git reset --hard HEAD^^ > /dev/null
$ cat a
foo
b
c
$ git reflog
145c322 HEAD@{0}: HEAD^^: updating HEAD
ae7c2b3 HEAD@{1}: commit: Append e to a
fdf2c5e HEAD@{2}: commit: Append d to a
145c322 HEAD@{3}: commit: Append c to a
363e22a HEAD@{4}: commit: Append b to a
fa26c43 HEAD@{5}: commit: Append foo to a
0a392a5 HEAD@{6}: commit (initial): Add file a
$ git reset --hard HEAD@{2}
HEAD is now at fdf2c5e Append d to a
$ cat a
foo
b
c
d