Git (V). La Guía Completa. Trabajar con Repositorios Remotos

Muy buenas lector. Este es el tercer post de la serie sobre Git, el famoso sistema de control de versiones desarrollado por Linus Torvalds en 2007, y que a día de hoy podemos decir que se ha convertido en el estándar de facto en su ámbito.

En los posts anteriore de esta serie te ofrecí una guía completa sobre las elementos y operaciones más importantes que debes conocer a la hora de trabajar con Git, desde la creación de repositorios, pasando por la publicación de commits, y terminando en la creación y merging de ramas. En este post me centraré específicamente en las operaciones que debes conocer a la hora de trabajar con repositorios remoto.

Tabla de contenidos:

  1. Orígenes Remotos
    1. Git Remote
  2. Ramas remotas
    1. Git Branch
    2. Git Checkout
    3. Git Switch
  3. Subir cambios al repositorio remoto
    1. Git Push
  4. Descargar cambios del repositorio remoto
    1. Git Fetch
    2. Git Pull
  5. Continuación

Orígenes Remotos

La forma más práctica de trabajar con Git, por experiencia personal, es de forma local. Aún así, esto no quiere decir que el repositorio con el que trabajas exista únicamente en tu disco local. De hecho, lo más habitual es trabajar de forma sincronizada con un repositorio remoto, compartido con más personas.

Antes de subir algo a GitHub, o a cualquier otra plataforma que permita trabajar con repositorios Git en remoto, debes informar a Git sobre la ubicación del repositorio remoto al que quieres subirlo. Ese destino se le suele conocer con el nombre de «remoto». Cada remoto no es más que una URL apuntando al repositorio remoto.

  • Cuando creas un nuevo remoto en un repositorio local que apunte a un repositorio remoto, debes especificar un nombre. Por convención, el nombre utilizado suele ser «origen».
  • Cuando clonas un repositorio de GitHub en tu disco local, el repositorio local que se crea ya viene configurado con su remoto, de nombre «origen», y que apunta a la dirección remota del repositorio clonado.

Git Remote

El Git Remote es la operación que te permite gestionar todas las conexiones remotas configuradas en tu repositorio local actual. Para conocer, de entrada, todas las conexiones remotas que existen en este momento, tan solo debes ejecutar el siguiente comando, estando situado dentro del repositorio local en cuestión. Si no has establecido esta conexión de antemano, de entrada no te saldrá ninguna.

git remote

Para mostrar todos los remotos configurados en tu repositorio local actual, con la correspondiente URL al sitio al que apuntan, puedes ejecutar el mismo comando, pero añadiendo el parámetro -v, como te muestro debjo:

git remote -v

Para añadir un nuevo remoto asociado al repositorio local en el que te encuentres, puedes utilizar este comando. En este caso, utilizaré origen como nombre del remoto, pero no es obligatorio utilizar este nombre. El termino url debes sustituirlo con la URL en la que se encuentra el repositorio remoto al que quieres apuntar.

git remote add origen url

También puedes clonar un repositorio remoto, como te explico aquí. En este caso, únicamente debes ejecutar el siguiente comando, sustituyendo el término url por la URL en la que se encuentra el repositorio remoto que quieres clonar. Esto generará un nuevo repositorio local, pero que incluirá todo el histórico de Git del repositorio remoto, y vendrá con el correspondiente remoto configurado.

Ramas Remotas

Cuando trabajas con repositorios locales que están conectados a repositorios remotos, que inicialmente empiezan en el mismo commit, pero que acabaran divergiendo a medida que añadas nuevos commits en la rama actual del repositorio remoto.

En esta situación, existen dos tipos de ramas que van directamente asociadas una con la otra:

  • La rama local estándar, que es la nativa en el repositorio local, y que irá evolucionando a medida que publiques nuevos commits.
  • La rama remota o remote-tracking branch, que es una referencia de la rama del repositorio remoto, y representará, por tanto, el estado de la rama en el momento en que se estableció comunicación por ultima vez con el repositorio repositorio.

Al clonar un repositorio remoto en tu disco local, por defecto, únicamente se importa como rama local, la rama que en el repositorio remoto está establecida como master o main. Las otras ramas del repositorio remoto son accesibles desde el repositorio local pero como ramas remotas, sin tener una rama local asociada.

Git Branch

Para conocer todas las ramas remotas de las que tu repositorio local actual tiene conocimiento, puedes utilizar el siguiente comando:

git branch -r

Git Checkout

Si quieres saltar a una rama remota desde tu repositorio local actual, puedes hacerlo utilizando el siguiente comando, sustituyendo origen por el nombre del remoto que tengas configurado (en caso de que tenga otro nombre), y rama por el nombre de la rana. Al hacer esto, pasarás a estar en estado Detached HEAD, por lo que no podrás publicar nuevos commits desde ahí.

git checkout origen/rama

Git Switch

Si quieres crear una rama local asociada a una de las ramas remotas que no tienen contrapartida local, puedes hacerlo utilizando el siguiente comando, sustituyendo rama por el nombre de la rama remota. De esta manera, si Git detecta que rama no existe de forma nativa, creará una copia de la misma, y las conectará.

git switch rama

Tras haber hecho esto, ahora podrás publicar nuevos commits en esa rama local, y posteriormente subirlos a la rama remota.

Subir Cambios al Repositorio Remoto

Cuando trabajas con tu repositorio local, pero este tiene configurado un origen remoto, a medida que vas publicando commits en local, se creara una divergencia entre el estado de tu repositorio local, y el repositorio remoto al que apunta el origen remoto que tenga configurado.

El proceso de subir los commits que has ido publicando en local al repositorio remoto puedes hacerlo de forma manual en cualquier momento, mediante un Git Push.

Git Push

Para utilizar el Git Push de la manera estándar, tan solo debes ejecutar el comando que te dejo a continuación, indicando el nombre del origen remoto (por defecto es origin, tal como te muestro en el ejemplo), y el de la rama local, de la cual quieres subir los commits. En caso de que esta rama no exista en el repositorio remoto, este comando también la creará por ti.

git push origin rama

Si ejecutas el mismo comando anterior, pero añadiendo el parámetro -u, como te muestro debajo, lo que le estarás indicando a Git es que quieres establecer que esa conexión a nivel de origen remoto y rama sea la conexión upstream o estándar. Esto significa que es la conexión que funcionará por defecto para este repositorio concreto.

git push -u origin rama

Una vez has ejecutado el comando anterior para especificar la conexión upstream, las próximas veces que quieras subir commits de esta rama concreta hacía el origen remoto, no será necesario que indiques ni el nombre del origen ni el de la rama. Git utilizará por defecto los que hayas indicado en el comando anterior.

git push

Como, ahora será mucho más rápido ir subiendo los cambios de tu rama local al repositorio remoto. Si más adelante pasas a trabajar con otra rama, tan solo debes cambiar el upstream.

Descargar Cambios del Repositorio Remoto

Otra cosa que puede pasar al trabajar con un repositorio local que está conectado a un origen remoto, es que el repositorio remoto reciba commits que provengan de otros usuarios, y que tu no tengas contemplado en tu repositorio local.

En estos casos, es importante que de forma regular vayas actualizando tu repositorio local con los commits que se vayan publicando en el repositorio remoto. Para ello puedes utilizar dos operaciones de Git Fetch y Git Merge. Ambas te permiten hacer lo mismo pero de forma diferente, como te contaré a continuación.

Git Fetch

El Git Fetch te permite actualizar las ramas de seguimiento remotas con los commits del repositorio remoto, pero sin hacer una fusión con el repositorio loca. Así, Para descargar los nuevos commits del repositorio remoto que tengas configurado en el origen especificado, y añadirlos a todas las ramas de seguimiento remotas asociadas a las ramas locales, puedes utilizar el siguiente comando (en este caso, mi origen remoto es origin).

git fetch origin

También puedes hacer un fetch acotado a una única rama. En este caso, unicamente los commits publicados en esa rama existente en el repositorio remoto serán importados a tu rama de seguimiento remota, vinculada a la rama local. esta rama existente en el repositorio

git fetch origin rama

Git Pull

El Git Pull, al igual que el Git Fetch, te proporciona una manera de recuperar los cambios de un repositorio remoto a tu repositorio local, pero, a diferencia del primero, en el que únicamente se descargan los commits a la rama de seguimiento remota, con el Git Pull los commits se aplican también a la rama local, produciéndose un merge. En cierto modo, se podría decir que es como una combinación del Git Fetch y el Git Merge.

git pull origin rama

Si hay conflictos durante la fusión, la operación de Git Pull no será automática, y será necesario que corrijas los cambios en los ficheros afectados, publicar un commit con dichas correcciones en tu repositorio local, y, seguidamente, subir los este commit en el repositorio remoto mediante un Git Push.

Continuación

En esta guía, como has podido ver, me he centrado es operaciones de Git bastante más avanzadas que en la guía previa. Todas ellas pueden llegar a ser sumamente útiles llegado el momento, pero debes tener algo más de cuidado a la hora de utilizarlas.

Si justo estás empezando con Git, y, por la magia de Google, has ido a parar en esta página, te recomiendo que no dejes de echar un ojo al resto de posts de esta serie, empezando desde el primero.

  1. Git (I). Introducción
  2. Git (II). Instalación y configuración inicial.
  3. Git (III). Guía completa
  4. Git (IV). Guía avanzada
  5. Git (V). Repositorios remotos

¡Un saludo y hasta la próxima!

Anuncio publicitario
Categorías Git

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto:
search previous next tag category expand menu location phone mail time cart zoom edit close