Realizar fácilmente el checkout de una rama remota en Git [Paso a paso]

¿Eres un recién llegado a un equipo y te han indicado que debes revisar una rama remota del repositorio de código Git? Ya sea parte de una empresa extensa o un equipo compacto, dominar las ramas remotas de Git es clave para una colaboración de código sin problemas. En esta guía, profundizarás en el proceso de recuperar código de un repositorio remoto de Git, centrándote en el comando ‘git checkout remote branch’.

Not a reader? Explore this related video tutorial!

Not seeing the video? Ensure your ad blocker is disabled.

Prerrequisitos

  • Este tutorial utiliza la versión 2.30 de Git SCM (gestión de código fuente) en Windows 10, aunque es compatible con cualquier sistema operativo compatible con Git.

Otros posibles métodos de instalación para Windows incluyen Chocolatey y Git4Win.

Comprensión de una rama remota

Los repositorios de Git registran y rastrean una secuencia de commits relacionados dentro de una rama. Por defecto, un commit reside en la rama activa actualmente, generalmente denominada “main” o “master”.

A remote branch is a branch located in a remote Git repository. These remote repositories, termed as “remotes,” are the destinations your local Git repository will scout for external commit updates once set up.

Descubre las sucursales disponibles usando el comando branch de Git. La sucursal marcada con un asterisco (*) es la activa. Las sucursales enumeradas a continuación son únicamente locales ya que no se han descargado sucursales remotas aún.

git branch
List of local branches shown from the git branch command.

Domina la verificación de sucursales remotas de Git

Supongamos que tienes un repositorio Git local y surge la necesidad de colaborar con otros desarrolladores. Aquí es donde entra en juego el comando checkout de Git, permitiéndote obtener los últimos commits de una sucursal remota en un repositorio Git remoto.

Una vez que una sucursal remota está configurada, Git reflejará la sucursal remota en lugar de una sucursal solo local. A continuación se muestra un ejemplo del comando git checkout remote <branch>.

git checkout remote main

Clona el repositorio Git remoto

Ahora que tienes a tu disposición un repositorio existente, es hora de sumergirse. Sigue los pasos a continuación para clonar el repositorio remoto en una carpeta local en tu máquina.

1. A menudo es más sencillo clonar un repositorio remoto a través de la URL HTTPS en lugar de SSH para evitar problemas de certificados y cortafuegos.

  • Dirígete al repositorio en GitHub.
  • Haz clic en el botón Code y selecciona HTTPS.
  • Haz clic en el icono Clipboard junto al enlace para copiar la URL en tu portapapeles.
Locating the HTTPS clone URL in GitHub.

2. Habiendo copiado la URL de HTTPS a tu portapapeles, abre una interfaz de línea de comandos utilizando tu CLI preferida, como el Símbolo del sistema de Windows o el Terminal de Windows.

3. Navega hasta la carpeta donde deseas que resida el repositorio clonado. Para este tutorial, se utiliza la carpeta git en el directorio principal, como se muestra en las capturas de pantalla. Ejecuta el siguiente comando para clonar el repositorio, lo que crea una subcarpeta que alberga el repositorio remoto.

# GitHub git clone https://github.com/Adam-the-Automator/git-checkout-remote-branch
Cloning a remote repository to the local machine.

4. Desplázate al repositorio clonado con el comando cd git-checkout-remote-branch.

Ejecuta el siguiente comando de estado para asegurarte de que el repositorio se haya clonado correctamente. El comando status de Git revela las diferencias entre la rama local y la rama remota, ayudando a determinar si tu rama está conectada y actualizada. ¡El control remoto Git predeterminado se llama origin, con prefijo a la rama remota main. git status

git status
Checking a repositories status.

Para la mayoría del software Git moderno, main es la rama principal predeterminada. Es posible que encuentres una aplicación más antigua que utilice master como nombre predeterminado de su rama, pero ambos nombres son funcionalmente iguales. Este tutorial utiliza ramas con nombres como main, RemoteBranch, SomeBranch y AnotherBranch.

¿Qué es un remoto en Git y cómo hacer un seguimiento de ramas remotas?

Clonar un repositorio crea automáticamente una referencia a una fuente remota, conocida como un remoto. Esta referencia se utiliza para verificar nuevos commits o enviar nuevos cambios al repositorio remoto.

A Git repository itself may have multiple remotes, but a branch can only reference a single remote.

Hacer un seguimiento de una rama remota establece una relación con una rama local. Esta relación te permite enviar o recibir commits de manera sencilla desde la rama remota a la rama local. Además, una rama seguida determina cuántos commits adelante o atrás está la rama local con respecto a la remota.

Lista de remotos de un repositorio Git

En primer lugar, asegúrate de que el repositorio con el que estás trabajando tenga algún remoto de Git. Para hacer esto, visualiza los remotos de Git en tu repositorio con el comando git remote como se muestra a continuación. En este caso, se muestran dos remotos, origin y remote2.

git remote
Viewing a repositories two configured remotes.

Dos repositorios remotos adicionales rastreados se llaman origin y remote2, donde tus remotos pueden ser diferentes.

Para obtener más detalles sobre los remotos configurados, añade el interruptor v para mostrar la URI completa del remoto de Git.

git remote -v
Viewing verbose details about repo remotes.

Te preguntarás por qué hay URI separadas para fetch y push. Algunos flujos de trabajo en Git te permiten verificar actualizaciones en un repositorio en una URI diferente a donde podrías enviar cambios, esto se llama el flujo de trabajo triangular.

Visualización de Ramas Remotas Disponibles

Muestra todas las ramas disponibles, tanto locales como remotas, en tu repositorio con el comando branch. Para mostrar también las ramas remotas, agrega el interruptor all, como se ejemplifica a continuación.

git branch --all

En la imagen siguiente, el repositorio remoto origin utilizado en este tutorial se muestra como se esperaba. Sin embargo, esta imagen omite todas las ramas del remoto llamado Remote2.

Viewing all known branches in a repo (including remotes).

Si una rama en tu remoto no aparece en la lista de ramas, debes actualizar tu lista de ramas remotas disponibles según se explica en la siguiente sección.

Actualización de las Ramas Remotas Disponibles

A veces, un repositorio remoto puede añadir o alterar ramas. Para asegurarte de que estás trabajando con las ramas más actualizadas, es necesario ejecutar el comando git fetch.

El comando fetch se conecta al repositorio remoto, recuperando una lista de todas las ramas disponibles. Vea las ramas actualmente rastreadas después de ejecutar el comando git fetch para asegurarse de que la rama remota ahora sea visible, como se muestra a continuación.

# Recuperar ramas remotas disponibles
git fetch

# Verificar que todas las ramas ahora estén disponibles en el repositorio Git local
git branch --all

A continuación, la rama remotes/origin/RemoteBranch ahora es visible en la lista de ramas remotas disponibles después de ejecutar el comando git fetch.

Using git fetch to update the list of available remote branches.

El comando fetch solo verifica actualizaciones desde el remoto que está actualmente rastreado en la rama actual. Para que Git verifique actualizaciones desde todos los remotos en el repositorio, independientemente del estado de seguimiento, agregue el parámetro all.

git fetch --all

Para obtener las ramas disponibles de un remoto específico, incluya el nombre del remoto en el comando git fetch, como Remote2 en el ejemplo a continuación, que recupera la rama main.

# Listar ramas disponibles en un repositorio Git local
git branch --all
# Obtener ramas disponibles desde remote2
git fetch Remote2
# Verificar que la rama remote2, main, ahora está disponible
git branch --all
Fetching main from remote2 with the git fetch command.

Cada vez que revisas actualizaciones remotas con git fetch, git pull, o git push, Git compara los commits con la rama remota. Las ramas locales pueden seguir cualquier rama remota de Git. Además, varias ramas locales pueden configurarse para seguir la misma rama remota.

Visualizando el Seguimiento Remoto de Cada Rama

Para ver la rama remota seguida junto con la correspondiente rama local, utiliza el parámetro vv con el comando git branch. Los resultados del comando muestran una lista de remotos y ramas en el formato [<remoto>/<rama>] como se ilustra a continuación.

git branch -vv
Listing remote tracking of all local branches.

Modificando el Seguimiento Remoto de una Rama

Puede que sea necesario modificar tu rama local para seguir una rama remota diferente. Para establecer tu rama actual en una rama remota específica, utiliza el parámetro u, como se ilustra a continuación.

git branch -u Remote2/main
Setting what remote to track for the current branch.

Revisando Ramas Remotas de Git

Con nuevas ramas creadas en el repositorio Git remoto, es posible que necesites realizar una operación de git checkout remote branch. El checkout de una rama de repositorio remoto se ejecuta a través del checkout comando.

Si se cumplen las siguientes condiciones, Git determinará autónomamente el control remoto correcto, descargará una copia local de la rama remota y establecerá la copia local para hacer seguimiento de la rama remota. Verifique que las siguientes condiciones no se cumplan a través de los resultados del comando git branch --all.

  • A local branch with the same name does not already exist.
  • No existen múltiples remotos que utilicen el mismo nombre de rama remota.

Para realizar la operación de git checkout en una rama remota, utilice el comando git checkout y escriba el nombre de la rama remota como se muestra a continuación.

git checkout RemoteBranch
Creating a local branch from a remote branch with git checkout.

Si su repositorio local ya contiene una rama local con el mismo nombre, agregue el parámetro b para especificar un nombre de rama local alternativo antes de la rama remota a verificar.

git checkout -b AnotherBranch origin/RemoteBranch
Creating a local copy of a remote branch with an alternate local branch name.

Si su repositorio local tiene múltiples remotos con el mismo nombre de rama, especifique qué remoto y rama seguirá los commits locales.

git checkout --track origin/RemoteBranch
Creating a local copy of a remote branch with tracking enabled.

Las versiones futuras de Git posiblemente prefieran que utilice el comando git switch para cambiar y crear ramas. El comando switch de Git es solo para ramas, mientras que el comando checkout de Git tiene muchas habilidades. Irshad S. escribió un buen artículo introductorio sobre la razón si desea leer más al respecto.

Empujar una Rama Local a un Remoto

Al crear una rama local sin una rama remota correspondiente para realizar el seguimiento, puedes enviar la rama al remoto utilizando el comando git push. El método más directo para establecer una nueva rama en tu remoto preferido es empleando el parámetro u.

El parámetro u, como se utilizó anteriormente, requiere los argumentos del nombre del repositorio y la rama fuente. Al especificar únicamente HEAD como el nombre de la rama fuente, Git comprende que debe usar el nombre de la rama local actual como el nombre en el remoto, en este caso, NewBranch.

# Checkout y cambiar a NewBranch
git checkout -b NewBranch
# Crear NewBranch en el remoto origin
git push -u origin HEAD
# Verificar que las ramas en el remoto ahora existen
git branch -vv
Pushing a local branch to an upstream remote named origin with the same name as local.

HEAD es un atajo que simplemente significa la rama actual. Puedes enviar otras ramas al remoto y establecer el seguimiento utilizando su nombre en lugar de HEAD.

En ocasiones, el nombre de la rama local actual no coincide con el nombre de la rama remota. Para utilizar un nombre distinto, especifica el nombre deseado de la rama después de la fuente, unido por dos puntos, como se muestra a continuación.

# Crear la rama actual en el remoto origin como AnotherBranch
git push -u origin HEAD:AnotherBranch
# Verificar que la rama local NewBranch ahora existe como AnotherBranch en el remoto origin
git branch -vv
Pushing a local branch to an upstream remote named origin with an alternate remote branch name.

Próximos Pasos y Recursos Adicionales de Git

Habiendo revisado los fundamentos de Git, la gestión de remotos y la ejecución de git checkout remote branch, ahora estás equipado con un tesoro de conocimientos que te ayudarán a evitar frustraciones futuras. Los pasos para hacer checkout de una rama remota en Git y las mejores prácticas compartidas serán recursos invaluables para el futuro.

Si deseas profundizar en otros aspectos de la gestión de un repositorio Git, se recomiendan encarecidamente los siguientes recursos:

  • A primer on detached heads: Discover scenarios where a detached HEAD is beneficial or inadvertent, and how to handle it.
  • Git switch: Un comando dedicado al manejo de ramas, a diferencia del versátil checkout de Git.

Source:
https://adamtheautomator.com/git-checkout-remote-branch/