Ya seas un experto o un recién llegado en el uso de git, de vez en cuando se cometen errores que tienen fácil solución. Veamos las soluciones a 6 errores comunes cuando usamos git.

Cuando estamos usando git a veces, ya sea porque estamos despistados, por que no sabemos bien qué estamos haciendo o por cualquier otro motivo simplemente cometemos errores.

Algunos son complicados de solucionar y para otros (generalmente los más comunes) la solución es sencilla… si se conoce. Estas son las soluciones a 6 de los errores más comunes que cometemos cuando estamos trabajando con git.

Este artículo es una traducción de un artículo en inglés escrito por Sam Beckham para el blog de gitlab.com publicado bajo licencia CC-by-sa. Empezamos…

1. ¡Vaya! Me equivoqué al escribir el mensaje del último commit

Después de unas cuantas horas trabajando en nuestro repositorio de git, es fácil cometer un error al escribir nuestro último commit. Menos mal que existe una solución sencilla para solucionarlo:

git commit --amend

Esto abrirá el editor que tengas configurado y te permitirá realizar cambios en el comentario del último commit. Nadie tiene que darse cuenta que has escrito hacer sin “h”.

Sobre esta solución ya había escrito un artículo en mi blog, que puedes encontrar aquí.

2. ¡Vaya! Olvidé añadir un archivo al último commit

Otro error muy común al usar git es realizar un commit demasiado pronto. Has olvidado incluir un archivo, quizás lo estabas editando y olvidaste guardarlo antes, o necesitas hacer un pequeño cambio que tienes que incluir en el último commit.

Para eso --amend vuelve a ser la opción que te ayude.

Añade ese archivo faltante o gurda los cambios del archivo que necesitas incluir y que todavía tienes en el editor y ejecuta estos comandos:

git add archivo_faltante.txt git commit --amend

En este punto puedes tanto editar el mensaje del commit o mantener el que tenías.

3. ¡Vaya! Añadí un archivo que no quería al repositorio

¿Qué pasa si hace justo lo contrario que en el caso 2? ¿Qué pasa si hemos añadido un archivo que realmente no queríamos añadir en el commit?

Quizás un archivo que no quieres compartir, una imagen que has guardado en la carpeta equivocado… Todo tiene solución.

Si sólo lo has mandado a “stage” pero no has hecho un commit, simplemente hay que quitar de “stage” el archivo que queremos:

git reset /assets/img/archivo_a_eliminar.jpg

Si ya has realizado un commit, debes dar un paso más:

git reset --soft HEAD~1 git reset /assets/img/archivo_a_eliminar.jpg rm /assets/img/archivo_a_eliminar.jpg git commit

Esto revertirá el commit, eliminará el archivo (en el ejemplo una imagen) y después añadirá un nuevo commit en su lugar.

4. ¡Vaya! Hice un commit con todos esos cambios en la rama principal

Quizás estás trabajando en una nueva característica o añadiendo una opción de prueba, pero olvidaste crear una rama de pruebas y en vez de eso estás trabajando sobre la rama principal del desarrollo.

Ya has hecho un commit con un montón de archivos y ahora todas esas pruebas no definitivas están en la rama principal. Afortunadamente GitLab puede prevenir que hagas push directamente en la rama principal. Así que podemos revertir los cambios a una nueva rama con estos comandos:

git branch rama-pruevas git reset HEAD~ --hard git checkout rama-pruevas

Esto crea una nueva rama, después revierte los cambios de la rama principal a donde fueron tus cambios y por último cambia a la nueva rama donde estarán tus cambios previos intactos.

Pasado el susto es hora de seguir probando cosas, esta vez sí en la rama de pruebas.

5. ¡Vaya! cometí un error al poner el nombre de mi rama

Los lectores más perspicaces notarán que he cometido un error al escribir el nombre de la nueva rama que he creado en el paso anterior… es tarde y ya no sé lo que tecleo. Pero es sencillo modificarlos.

Renombramos una rama de una manera similar a como lo hacemos con un archivo con el comando mv : moviéndolo a una nueva ubicación con el nombre correcto:

git branch -m rama-pruevas rama-pruebas

Si ya habías hecho un push de esta rama al repo remoto, hay un par de pasos extra que necesitas dar. Necesitamos borrar la rama vieja del repositorio remoto y hacer un push con la nueva rama, así:

git push origin --delete rama-pruevas git push origin rama-pruebas

6. ¡Vaya! lo hice de nuevo

Este comando es para cuando todo ha salido mal. Cuando has copiado/pegado muchas “soluciones” de sitios como Stack Overflow y tu repositorio tiene peor pinta que cuando empezaste a probar soluciones de aquí y de allí, a todos nos ha pasado.

git reflog muestra una lista de cosas que has hecho. Después permite a git hacer mágicamente un viaje en el tiempo hasta un punto en el pasado. Hay que comentar que este es el último recurso y no debería ser utilizado a la ligera. Para ver esa lista ejecuta el comando:

git reflog

Cada paso que dimos, cada cambio que hicimos, git estaba atento. Puede darnos una lista similar a esta:

3ff8691 ( HEAD -> feature-branch ) HEAD@ { 0 } : Branch: renamed refs/heads/future-brunch to refs/heads/feature-branch 3ff8691 ( HEAD -> feature-branch ) HEAD@ { 2 } : checkout: moving from master to future-brunch 2b7e508 ( master ) HEAD@ { 3 } : reset: moving to HEAD~ 3ff8691 ( HEAD -> feature-branch ) HEAD@ { 4 } : commit: Adds the client logo 2b7e508 ( master ) HEAD@ { 5 } : reset: moving to HEAD~1 37a632d HEAD@ { 6 } : commit: Adds the client logo to the project 2b7e508 ( master ) HEAD@ { 7 } : reset: moving to HEAD 2b7e508 ( master ) HEAD@ { 8 } : commit ( amend ) : Added contributing info to the site dfa27a2 HEAD@ { 9 } : reset: moving to HEAD dfa27a2 HEAD@ { 10 } : commit ( amend ) : Added contributing info to the site 700d0b5 HEAD@ { 11 } : commit: Addded contributing info to the site efba795 HEAD@ { 12 } : commit ( initial ) : Initial commit

Echa un vistazo a la columna más a la izquierda, esto es un índice. Si quieres volver a un punto del pasado de tu repositorio ejecuta el siguiente comando, reemplazando {index} por el número al que quieras que vuelva todo el repositorio, por ejemplo dfa27a2 .

git reset HEAD@ { dfa27a2 }

También podemos recuperar un archivo o todo el repositorio a una versión anterior. Tienes ese tutorial aquí.

Puedes encontrar más artículos en mi blog sobre git pinchando aquí.

Gracias a la gente de GitLab por compartir este interesante tutorial, que espero que te haya sido útil, porque simplemente los errores ocurren, pero está bien saber cómo solucionarlos.

———————————————————————-