Original article: Git Reset Origin – How to Reset a Local Branch to Remote Tracking Branch

Git es un sistema de control de versiones gratuito y de código abierto. Es el sistema de control de versiones más popular en uso hoy en día.

Git realiza un seguimiento de los cambios realizados en un proyecto a lo largo del tiempo. Esto permite a múltiples desarrolladores colaborar y trabajar en el mismo proyecto en paralelo, sin importar dónde se encuentren en el mundo.

Permite a los desarrolladores ver el historial del proyecto y ver quién realizó qué cambios y por qué se realizaron esos cambios en primer lugar. Además, con Git, puedes revertir a una versión anterior del código si es necesario.

Básicamente, Git garantiza a los desarrolladores que están todos en la misma página y sepan qué está sucediendo en el proyecto.

Cuando trabajas en un proyecto, uno de los desafíos que puedes enfrentar es tratar de sincronizar tu trabajo, específicamente, sincronizar las ramas locales y remotas.

En este artículo, aprenderás cómo restablecer y hacer coincidir exactamente una rama Git local con una rama remota.

Esto es lo que cubriremos:

¿Qué es una rama en Git? Ramas de Git en pocas palabras para principiantes

La ramificación es un aspecto fundamental del control de versiones y un concepto importante de aprender.

Gracias a la ramificación, los desarrolladores pueden colaborar de una manera más flexible. La ramificación hace que el proceso de desarrollo diario sea más fluido y eficiente.

La ramificación es una forma de gestionar diferentes versiones de tu código y actúa como un puntero a una instantánea de tus cambios.

Cuando creas por primera vez un repositorio Git para tu proyecto, en ese mismo momento se crea también la rama principal.

La rama principal es la rama primaria y predeterminada de tu proyecto. Representa la versión libre de errores, estable y utilizable de tu código que está lista para ser lanzada y compartida con el público. Es la base de código principal.

Pero, ¿qué sucede cuando quieres añadir una nueva característica a tu proyecto?

Antes de añadirla, necesitas probarla y asegurarte de que no introduce nuevos errores o interfiere con el código existente.

Debe haber una forma de trabajar en la nueva característica sin afectar la base de código.

Y aquí es donde la ramificación resulta útil.

Las ramas son espacios aislados para experimentar y probar código nuevo sin afectar al código en la rama principal.

Puedes crear una nueva rama y hacer los cambios que desees. Si estás satisfecho con los cambios, puedes añadirlos a la rama principal fusionándolos. Si no lo estás, puedes eliminar esa rama sin interferir con el código principal en el proyecto.

Las ramas también permiten a los desarrolladores trabajar en diferentes características al mismo tiempo sin interferir en el trabajo de los demás.

Para obtener más información sobre las ramas en Git, echa un vistazo a este vídeo que explica cómo funcionan, y marca este artículo que proporciona una hoja de trucos sobre cómo usarlas.

Ramas locales VS remotas VS ramas de seguimiento remoto en Git - ¿Cuál es la diferencia?

Una rama local es una rama que solo es accesible en tu máquina local y existe allí de manera aislada. Desde aquí, puedes agregar archivos y hacer confirmaciones de cualquier cambio que realices. Esos cambios se guardarán localmente y solo serán visibles para ti y estarán disponibles en tu máquina física local.

Los otros desarrolladores no podrán ver tu trabajo ni los cambios que hayas hecho.

Puedes crear una rama local llamada my_branch usando el siguiente comando:

git branch my_branch

Y para luego listar todas tus ramas locales, solo necesitas usar el comando git branch.

Para colaborar con otros desarrolladores en el mismo proyecto y para que ellos puedan ver cualquier cambio que realices, necesitas enviar los cambios desde tu rama local a un repositorio remoto. Esto nos lleva a las ramas remotas.

Una rama remota se refiere a una rama que existe en un repositorio remoto. Un repositorio remoto, también conocido como remoto, típicamente será un repositorio alojado en algún lugar en Internet, en una ubicación remota como en los servidores de GitHub.

El nombre predeterminado de un repositorio remoto es origin.

Ahora, una rama de seguimiento remoto se refiere a una referencia local del estado de la rama remota. Por defecto, las ramas no tienen conexión entre sí. Dicho esto, puedes indicarle a una rama local que siga a una remota.

Cómo restablecer una rama local de Git a la remota

Es posible que hayas estado trabajando en tu rama local, realizando diversos cambios y modificaciones en un proyecto, y hayas concluido que esos cambios ya no son necesarios.

Quieres eliminarlos y restablecer la rama a la rama remota.

Además, otro desarrollador puede haber realizado cambios y los haya enviado a la rama remota, por lo que necesitas obtener esos últimos cambios del repositorio remoto para estar al día.

Los pasos que necesitas seguir para lograr esto son los siguientes:

  • Guardar el estado actual de tu rama local (opcional).
  • Obtener la última versión del código desde el remoto.
  • Restablecer la rama local.
  • Limpiar archivos (opcional).

Guardar el Estado Actual de tu Rama Local

Antes de comenzar, es posible que desees guardar el estado de tu rama actual en otra rama.

Cuando restableces una rama local de Git a la remota, perderás los cambios que hayas realizado localmente.

Este paso es opcional, y puedes elegir hacerlo en caso de que algo salga mal o desees volver a ese trabajo nuevamente en el futuro.

Para guardar el trabajo utiliza los siguientes comandos:

git commit -a -m "Estoy guardando mi trabajo"
git branch backup_trabajo

Tu trabajo se guardó como backup_trabajo.

Hacer un git checkout

Por lo general, habrá una rama de seguimiento remoto local con el mismo nombre que la remota a la que deseas restablecer, como main.

Para este proceso usamos:

git checkout main

Si estás utilizando un nombre diferente para esta rama, reemplaza main con el nombre que estés utilizando.

Obtener origen

Para obtener el repositorio remoto y el estado y la versión más recientes del código en el repositorio remoto, introduce el siguiente comando:

git fetch origin

origin es un alias creado por Git y especifica la URL remota del repositorio remoto. Por lo general, Git asume automáticamente que el nombre del repositorio remoto es origin.

Si tienes un nombre remoto diferente, reemplaza origin con el nombre que estés usando.

Restablecer el repositorio local

Ahora, restablece la rama local main al repositorio remoto utilizando el siguiente comando:

git reset --hard origin/main

Limpiar cualquier cambio no rastreado

Este paso es opcional. Después de usar los comandos anteriores, es posible que te encuentres con algunos archivos no rastreados. Utiliza el siguiente comando para limpiar cualquier cambio no rastreado:

git clean -xdf

Vamos a desglosar la bandera -xdf y explicar qué hace cada parte:

  1. La bandera -x elimina archivos ignorados.
  2. La bandera -d elimina carpetas no rastreadas.
  3. La bandera -f elimina archivos no rastreados.

Conclusión

Y ahí lo tienes: ahora has restablecido tu rama local a la remota. Esperemos que hayas encontrado útil este artículo.

Para aprender más sobre Git, echa un vistazo a los siguientes recursos gratuitos:

¡Gracias por leer y feliz codificación!