Close

Git remote

SVN utiliza un único repositorio centralizado para funcionar como un centro de comunicaciones para los desarrolladores; además, a la hora de colaborar, se pasan conjuntos de cambios entre las copias de trabajo de los desarrolladores y el repositorio central. El modelo de colaboración distribuida de Git es completamente diferente, ya que proporciona a cada desarrollador su propia copia del repositorio, con su propio historial local y estructura de ramas. Los usuarios, por lo general, necesitan compartir una serie de confirmaciones, en lugar de un solo conjunto de cambios. En vez de confirmar un conjunto de cambios de una copia de trabajo en el repositorio central, Git te permite compartir ramas enteras entre repositorios.

El comando git remote es una parte de un sistema más amplio que se encarga de sincronizar los cambios. Los registros inscritos mediante el comando git remote se utilizan junto con los comandos git fetch, git push y git pull. Todos estos comandos tienen sus propias responsabilidades de sincronización, que pueden consultarse en los enlaces correspondientes.


Git remote


El comando git remote te permite crear, ver y eliminar conexiones con otros repositorios. Las conexiones remotas se asemejan más a marcadores que a enlaces directos con otros repositorios. En lugar de brindar acceso en tiempo real a otro repositorio, funcionan como nombres prácticos que pueden emplearse para hacer referencia a una URL no tan sencilla.

Por ejemplo, en el siguiente diagrama pueden verse dos conexiones remotas desde tu repositorio hasta el repositorio central y el repositorio de otro desarrollador. En lugar de hacer referencia a ellas mediante sus URL completas, puedes pasar los atajos del origen y John a otros comandos de Git.

Uso de git remote para conectar con otros repositorios
Ventana de consola
Material relacionado

Git log avanzado

Logotipo de Bitbucket
VER LA SOLUCIÓN

Aprende a usar Git con Bitbucket Cloud

Descripción general del uso de git remote


El comando git remote es, en esencia, una interfaz para gestionar una lista de entradas remotas almacenadas en el archivo ./.git/config del repositorio. Para ver el estado actual de la lista remota, se utilizan los siguientes comandos.

Visualización de configuraciones de git remote


git remote

Enumera las conexiones remotas que tienes con otros repositorios.

git remote -v

Lo mismo que el comando anterior, pero incluye la URL de cada conexión.

Creación y modificación de configuraciones de git remote


El comando git remote es también un método sencillo y útil para modificar el archivo ./.git/config de un repositorio. Los comandos que se presentan a continuación te permiten gestionar las conexiones con otros repositorios. Los siguientes comandos modificarán el archivo /.git/config del repositorio. El resultado de dichos comandos también puede conseguirse editando directamente el archivo ./.git/config con un editor de texto.

git remote add <name> <url>

Crea una nueva conexión a un repositorio remoto. Tras añadir el repositorio remoto, podrás usar <name> como un práctico atajo para <url> en otros comandos de Git.

git remote rm <name>

Elimina la conexión con el repositorio remoto que lleva el nombre <name>.

git remote rename <old-name> <new-name>

Cambia el nombre de una conexión remota de <old-name> a <new-name>.

Análisis de git remote


Git está diseñado para proporcionar a cada desarrollador un entorno de desarrollo totalmente aislado. Esto significa que la información no se envía automáticamente entre repositorios. En su lugar, los desarrolladores deben extraer commits de nivel superior hacia su repositorio local o enviar sus commits locales al repositorio central de forma manual. El comando git remote es una manera más simple de enviar URL a estos comandos de "compartición".

Origen remoto


Al clonar un repositorio con git clone, se crea automáticamente una conexión remota llamada “origin” (origen) que apunta al repositorio clonado. Esto resulta útil para los desarrolladores que crean una copia local de un repositorio central, ya que permite incorporar cambios de nivel superior o publicar confirmaciones locales de forma sencilla. Este comportamiento es también la razón por la que la mayoría de los proyectos basados en Git llaman "origin" a su repositorio central.

URL de repositorios


Git admite numerosas formas de hacer referencia a un repositorio remoto. Una de las maneras más fáciles de acceder a uno de ellos es a través de los protocolos HTTP y SSH. El protocolo HTTP brinda un acceso sencillo, anónimo y de solo lectura a un repositorio. Por ejemplo:

http://host/path/to/repo.git

Sin embargo, por lo general, no se pueden enviar confirmaciones a una dirección HTTP (de todos modos, no convendría permitir envíos anónimos). Para acceder con permisos de lectura y escritura, debes usar SSH en su lugar:

ssh://user@host/path/to/repo.git

Necesitarás una cuenta SSH válida en el equipo host, pero, aparte de eso, Git admite el acceso autenticado mediante SSH listo para usarse. Las modernas y seguras soluciones de alojamiento de terceros, como Bitbucket.com, te proporcionarán estas URL.

Comandos de git remote


El comando git remote es uno de los muchos comandos de Git que se combinan con “subcomandos” adicionales. A continuación, encontrarás un análisis de los subcomandos de git remote más utilizados.

ADD <NAME> <URL>

Añade un registro en ./.git/config para el repositorio remoto llamado <name> en la URL del repositorio <url>.

Acepta la opción -f, que aplicará el comando git fetch inmediatamente después de que se cree el registro remoto.

Acepta la opción --tags, que aplicará el comando git fetch de inmediato e importará todas las etiquetas del repositorio remoto.

RENAME <OLD> <NEW>

Actualiza ./.git/config para cambiar el nombre del registro de <OLD> a <NEW>. Se actualizan todas las ramas de seguimiento remoto y los ajustes de configuración del repositorio remoto.

REMOVE or RM <NAME>

Modifica ./.git/config y elimina el repositorio remoto llamado <NAME>. Se eliminan todas las ramas de seguimiento remoto y los ajustes de configuración del repositorio remoto.

GET-URL <NAME>

Genera las URL de un registro remoto.

Acepta --push. Se consultan las URL del comando push en lugar de las del comando fetch.

Con --all, se enumerarán todas las URL de los repositorios remotos.

SHOW <NAME>

Genera información de alto nivel sobre el repositorio remoto <NAME>.

PRUNE <NAME>

Elimina las ramas locales de <NAME> que no estén presentes en el repositorio remoto.

Acepta la opción --dry-run, que enumerará las ramas que estén configuradas para eliminarse, pero en realidad no las elimina.

Ejemplos de git remote


Además del origen, normalmente, conviene tener una conexión con los repositorios de tus compañeros de equipo. Por ejemplo, si tu compañero John cuenta con un repositorio de acceso público en dev.example.com/john.git, puedes añadir una conexión de la siguiente manera:

git remote add john http://dev.example.com/john.git

Disponer de este tipo de acceso a los repositorios de cada desarrollador posibilita la colaboración fuera del repositorio central. Esto puede resultar de mucha utilidad para los equipos pequeños que trabajan en un proyecto de gran envergadura.

Visualización de las conexiones remotas


De forma predeterminada, el comando git remote mostrará una lista de las conexiones remotas con otros repositorios previamente almacenadas. Esto generará un resultado de una sola línea con los nombres de los “marcadores” de los repositorios remotos.

$ git remote
origin
upstream
other_users_repo

Al invocar git remote con la opción -v, se imprimirá la lista de nombres de repositorios guardados como marcadores y, además, la URL del repositorio correspondiente. La opción -v significa "verbose" (detallado). A continuación, se muestra un ejemplo de resultado detallado de git remote.

git remote -v
origin  git@bitbucket.com:origin_user/reponame.git (fetch)
origin  git@bitbucket.com:origin_user/reponame.git (push)
upstream    https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream    https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo    https://bitbucket.com/other_users_repo/reponame (push)

Adición de repositorios remotos


El comando git remote add creará un nuevo registro de conexión con un repositorio remoto. Tras añadir el repositorio remoto, podrás usar como un práctico atajo para en otros comandos de Git. Si quieres más información sobre la sintaxis de URL aceptada, consulta la sección "URL de repositorios" de este artículo. Este comando creará un nuevo registro en el archivo ./.git/config del repositorio. A continuación, se muestra un ejemplo de actualización de este archivo de configuración:

$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"] 
   url = https://bitbucket.com/upstream_user/reponame.git 
   fetch = +refs/heads/*:refs/remotes/remote_test/*

Inspección de un repositorio remoto


Se puede añadir el subcomando show a git remote para presentar un resultado detallado sobre la configuración de un repositorio remoto. Dicho resultado incluirá una lista de las ramas asociadas al repositorio remoto y, además, los extremos conectados para la recuperación y el envío.

git remote show upstream
* remote upstream
   Fetch URL: https://bitbucket.com/upstream_user/reponame.git
   Push URL: https://bitbucket.com/upstream_user/reponame.git
   HEAD branch: main
   Remote branches:
      main tracked
      simd-deprecated tracked
      tutorial tracked
   Local ref configured for 'git push':
      main pushes to main (fast-forwardable)

Captura e incorporación de cambios de repositorios remotos de Git


Una vez configurado un registro remoto mediante el comando git remote, el nombre del repositorio remoto puede usarse como argumento en otros comandos de Git para comunicarse con el repositorio remoto. Tanto git fetch como git pull pueden utilizarse para leer desde un repositorio remoto. Ambos comandos tienen operaciones distintas, que se explican con más detalle en sus respectivos enlaces.

Aplicación del comando push en repositorios remotos de Git


El comando git push se emplea para escribir en un repositorio remoto.

git push <remote-name> <branch-name>

En este ejemplo, se cargará el estado local de <branch-name> en el repositorio remoto especificado por <remote-name>.

Cambio de nombre y eliminación de repositorios remotos


git remote rename <old-name> <new-name>

El comando git remote rename se explica por sí mismo. Al ejecutarse, este comando cambiará el nombre de una conexión remota de <old-name> a <new-name>. Además, modificará el contenido de ./.git/config para cambiar también el nombre del registro del repositorio remoto correspondiente.

git remote rm <name>

El comando git remote rm eliminará la conexión con el repositorio remoto especificado por el parámetro <name>. Para mostrarlo, vamos a deshacer la adición del repositorio remoto de nuestro último ejemplo. Si ejecutamos git remote rm remote_test y, a continuación, examinamos el contenido de ./.git/config, podemos ver que el registro [remote "remote_test"] ya no está ahí.


Compartir este artículo
Tema siguiente

Lecturas recomendadas

Consulta estos recursos para conocer los tipos de equipos de DevOps o para estar al tanto de las novedades sobre DevOps en Atlassian.

Gente que colabora utilizando un muro lleno de herramientas

Blog de Bitbucket

Ilustración de Devops

Ruta de aprendizaje de DevOps

Demostraciones de funciones con expertos de Atlassian del Centro de demostraciones

Cómo funciona Bitbucket Cloud con Atlassian Open DevOps

Suscríbete para recibir el boletín de DevOps

Thank you for signing up