Como Deshacer Commits en Git (Forma Local y Remota) – Parte 1
En esta página:
En la industria actual hay muchos desarrolladores y equipos de trabajo que suelen usar Git y GitHub para gestionar los repositorios de sus proyectos. Git es el sistema de control de versiones (VCS) más popular del mundo actualmente, nos permite hacer un seguimiento de los cambios de archivos basados en texto. Pero a veces como seres humanos podemos cometer errores a la hora de subir cambios a GitHub, en este Post te enseñare como deshacer estos cambios o commits antes de ser enviados, vamos con ello.
Partes
- Parte 1
- Parte 2 (Final)
Antes de continuar, te invito a leer los siguientes artículos para que estés familiarizado con este tutorial:
- Que es Git, como utilizarlo y otros detalles
- Conceptos y Técnicas de Git que debes saber antes de unirte a un Equipo de Git – Parte 1
- Que son las Ramas (Branches) en Git, como utilizarlas y otros detalles
- Como usar la versión GUI de Git (No Consola GitBash)
- Puedes leer más en la categoría Git
Asimismo te invito a escuchar el Podcast: “5 Consejos para ser un Programador más Productivo” (No son los clásicos consejos técnicos de programación, si no de rutinas y buenos hábitos cotidianos):
Spotify: | Sound Cloud: | Apple Podcasts |
Bien ahora continuemos con el Post: Como Deshacer Commits en Git (Forma Local y Remota) – Parte 1.
Para este Post haré uso de este repositorio el cual pertenece al tutorial llamado Como Crear un Reloj Digital (Numérico) con JavaScript.
Bueno ahora pasemos a realizar operaciones en el repositorio.
Deshaciendo Commits
Los commits de Git más fáciles de deshacer son los que aún no han sido enviando a un repositorio remoto como GitHub, Bitbucket, etc. Como usuario propietario, eres libre de hacer cualquier cosa en tu repositorio local. Pero cuando se trata de editar un historial de commits que se envían a un repositorio remoto, que por cierto pueden ser usados públicamente una ves que se encuentran en línea.
Esto significa que estamos poniendo en peligro el trabajo de otros desarrolladores al destruir el historia de git que ya está en uso. Por ello vamos a ver casos de como deshacer commits local y remotamente. En esta primera parte vamos a ver casos de manera local.
Deshaciendo Localmente Commits para evitar Archivos no deseados
Supongamos que estoy a punto de realizar un commit en mi repositorio local, haciendo uso del comando git add . o git add –all los cuales agregan todos los cambios de archivo al área de preparación en el repositorio. A veces podemos olvidar que algunos archivos no están relacionados con ese commit y no deberíamos de incluirlos.
Por suerte no es demasiado tarde, ya que podemos hacer uso del comando git reset agregando el nombredelarchivo que no queremos incluir. Por ejemplo si en mi repositorio local en la PC tengo un archivo llamado test.rar y ese archivo no forma parte del proyecto y no lo quiero incluir.
1 2 3 4 5 6 7 8 |
/reloj-numerico-javascript ├── /css ├── /js ├── index.html ├── README.md ├── test.rar // Omitir este Archivo |
Puedo hacer los pasos correspondientes para subir cambios a mi repositorio remoto, pero luego de ejecutar el comando git add . debo de escribir el comando git reset test.rar para no incluir ese archivo y luego continuar con los pasos respectivos para subir los cambios.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// Preparo los archivos git add . // No incluir el archivo test.rar git reset test.rar // Preparar el Commit git commit -m "Cambios" [main 08c3d2f] Cambios 1 file changed, 1 insertion(+), 1 deletion(-) // Subir los cambios al repositorio remoto (GitHub) git push Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 366 bytes | 366.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/collectivecloudperu/reloj-numerico-javascript.git 65006a0..08c3d2f main -> main |
Como yo solo hice unos cambios en el archivo index.html del proyecto, si voy al repositorio remoto en GitHub, puedo ver que solo hubo cambios en ese archivo y el archivo test.rar no se subió.
Bien ahora pasemos a otro caso sobre los mensajes de confirmación mal escritos.
Deshaciendo Localmente Commits con Mensajes de confirmación mal escritos
Luego de hacer mi último commit en mi repositorio local, puede pasar que escribí mal una palabra en mi mensaje de confirmación o commit, por ejemplo escribí la palabra “Cabios” en lugar de la palabra “Cambios”, no es demasiado tarde ya que puedo usar el comando git commit con la flag o bandera –amend, es decir el comando quedaría así git commit –amend -m “Cambios”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Palabra 'Cambios' mal escrita git commit -m "Cabios" [main 3d88eef] Cabios 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 test.rar // Palabra 'Cambios' corregida git commit --amend -m "Cambios" [main 663c8d1] Cambios Date: Sun Apr 18 23:41:21 2021 -0500 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 test.rar |
Entonces si hago todos los pasos correspondientes para subir los cambios (suponiendo que hice cambios solamente en el archivo index.html) al repositorio remoto, puedo ver en GitHub que el texto o palabra Cambios aparece correctamente.
Ahora pasemos a ver otro caos referente a cambios al último commit
Deshaciendo Localmente Commits para Agregar cambios al último commit
Supongamos que tenemos un commit que aún no se ha enviado y nos damos cuenta que se necesitan hacer cambios adicionales. Para solucionar esto, primero debemos agregar los archivos modificados al área de preparación mediante el comando git add seguido del nombredelarchivo.
Por ejemplo tengo un archivo llamado test.txt el cual quiero agregar a mi commit a último momento
1 2 3 4 5 6 7 8 |
/reloj-numerico-javascript ├── /css ├── /js ├── index.html ├── README.md ├── test.txt // Agregue este archivo a ultimo momento |
Antes de que el archivo test.txt fuese creado yo ejecute el primer comando que sirve para preparar los cambios, es decir el comando git add . y luego que agregue el archivo test.txt, entonces allí debo de ejecutar el comando git add test.txt para incluirlo en el commit.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// Preparo los archivos git add . // Agrego el archivo que fue creado a último momento git add test.txt // Preparo el Commit git commit -m "Cambios" [main 5eb3c4c] Cambios 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test.txt // Subo los cambios al repositorio remoto (GitHub) git push Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 8 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 266 bytes | 266.00 KiB/s, done. Total 3 (delta 1), reused 1 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To https://github.com/collectivecloudperu/reloj-numerico-javascript.git e05abff..5eb3c4c main -> main |
Entonces si voy a mi repositorio remoto en GitHub, puedo ver que se ha incluido el archivo test.txt sin problemas.
Bueno hasta aquí terminamos con la primera parte de este Post en donde aprendimos a deshacer commits de manera local.
Ten Paciencia, lo que quiero es que conozcas bien como deshacer commits y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje.
Nota (s)
- En la siguiente parte y última, vamos a deshacer commits de repositorios remotos.
- No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.
- Git
- 18-04-2021
- 07-09-2022
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)