Cuando estamos trabajando con git, creando X
funcionalidad en una rama Y
, podemos encontrarnos en una situación en la que queramos regresar al estado inicial, al punto en el que las cosas estaban funcionando bien antes de agregar cambios que resultaron perjudiciales para el proyecto.
Por ejemplo, tengo un proyecto en el que modifiqué mi archivo index.html
y creé un nuevo archivo llamado chat.js
y otro llamado chat.jsx
dentro de la carpeta components
. Al hacer un git status
obtengo lo siguiente:
1~/Desktop/proyecto master ✗ 0m ⚑ ◒ 2▶ git status 3On branch master 4Changes not staged for commit: 5 (use "git add <file>..." to update what will be committed) 6 (use "git checkout -- <file>..." to discard changes in working directory) 7 8 modified: index.html 9 10Untracked files: 11 (use "git add <file>..." to include in what will be committed) 12 13 chat.js 14 components/chat.jsx 15 16no changes added to commit (use "git add" and/or "git commit -a") 17
Supongamos entonces que los cambios que hice provocaron que el proyecto dejara de funcionar, por lo cual quiero devolver todo a como estaba antes.
Aprende Git Desde Cero en EDteam
Para resolver esta situación ejecutamos el comando git checkout .
Esto "deshace" los cambios que hayamos hecho en los archivos a los que Git les está haciendo seguimiento (el punto indica que deshaga todos los cambios de todos los archivos, si quieres de un archivo especifico pones su ruta en lugar del punto):
1~/Desktop/proyecto master ✗ 0m ⚑ ◒ 2▶ git checkout .
En nuestro ejemplo, sólo deshace los cambios que le haya hecho a index.html
, no afecta a los archivos nuevos que creé por que no están seguidos con Git:
1~/Desktop/proyecto master ✗ 0m ⚑ ◒ 2▶ git status 3On branch master 4 5Untracked files: 6 (use "git add <file>..." to include in what will be committed) 7 8 chat.js 9 components/chat.jsx 10 11no changes added to commit (use "git add" and/or "git commit -a")
Es aquí donde resulta útil usar el comando git clean -f
, que eliminará los archivos que aún no sigamos con Git, dejando limpio nuestro árbol de trabajo
1~/Desktop/proyecto master ✗ 2m ◒ 2▶ git clean -f 3Removing chat.js 4Removing components/chat.jsx
Ya en este punto mi proyecto está libre de los desastres que representaban los archivos que creé ?
Si quieres aprender más sobre el comando git clean
te invito a ver la documentación en https://git-scm.com/docs/git-clean
Eso es todo por ahora, nos leemos en el siguiente artículo.