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.
Material relacionado
Git log avanzado
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 ./.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.