¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Repositorios remotos
Sección perteneciente al curso Control de versiones con Git Avanzado.
Introducción
Hasta ahora hemos trabajado en local como si fuéramos el único desarrollador de un proyecto.ñ
Ahora veremos cómo conectarnos a un repositorio remoto y trabajar tanto en nuestro repositorio local como en el remoto.
El escenario más común es estar en un equipo de trabajo donde tendremos un repositorio remoto con el que vamos a estar sincronizándonos todos los desarrolladores.
Veremos que la gran parte del tiempo estaremos trabajando en nuestro repositorio remoto y solo de vez en cuando vamos a sincronizar con el remoto para que los demás puedan tener nuestro código o nosotros el de los demás.
Trabajar con servidores remotos
Aunque la gran parte del tiempo desarrollaremos en nuestro repositorio local, hay 3 motivos por los que nos conectaremos al remoto:
- Subir trabajo que hemos hecho en local y no está en el remoto
- Descargar trabajo que haya en remoto y no tengamos en local
- Actualizar información que tenemos sobre el repositorio remoto.
La primera vez, se crea un repositorio vacío en el servidor. El primer commit se crea siempre en un repositorio local.
Otro escenario es que ya exista un repositorio remoto con información (otro desarrollador ha hecho alguna subida). Nosotros tendríamos que descargarnos el repositorio remoto a nuestro equipo. Este proceso se llama clonar un repositorio.
Soluciones existentes
- Azure DevOps / Team Foundation Server
En todas esas opciones hay que crearse una cuenta.
En esos servidores de repositorios Git, podremos crear repositorios vacíos, que es lo que nos interesa.
Hay dos métodos para conectarnos a un repositorio remoto:
- Vía HTTPS: el más común.
- Vía SSH
Trabajar con remotes
Vamos a ver cómo se conecta un repositorio local a un repositorio remoto. Para ello, en Git existe un tipo de objeto llamado remote.
Podemos tener nuestro repositorio local conectado a varios servidores remotos, no solo a uno.
Si solo hay un remote, este se llama origin (por convención).
Un remoto tiene un nombre y una URL. Para añadirlo:
git remote add <NOMBRE_REMOTE> <URL_REMOTE>
Por ejemplo:
git remote add origin https://ruta/repositorio/remoto.git
En este momento se crea un alias, pero no se establece la conexión con el servidor. Solo cuando nos vayamos a sincronizar con el servidor (subir o descargar cambios).
Si queremos renombrar un remote:
git remote rename <NOMBRE_ACTUAL> <NUEVO_NOMBRE>
Listar remotes:
git remote
Si quisiéremos ver además la dirección a la que apunta:
git remote -v
Veremos que nos va a mostrar dos, una dirección para subir los cambios y otra para descarga de cambios. Normalmente serán la misma.
Poner ejemplo de salida del comando anterior
Cambiar la URL de un remote:
git remove set-url <NOMBRE_REMOTE> <NUEVA_URL>
Si ahora queremos subir los cambios al repositorio remoto:
git push <REMOTE> <RAMA_LOCAL>
Por ejemplo, si queremos subir la rama local master al repositorio remoto origin:
git push origin master
En ese momento se establecerá conexión con el remote, comprobará credenciales y subirá los cambios.
Si ahora queremos ver las ramas locales y las copias de las ramas remotas:
git branches -a
Ahora veremos el escenario en el que el repositorio remoto ya existe y queremos sincronizar con nuestro repositorio local.
Si no teníamos copia, clonaremos el repositorio:
git clone <URL_REMOTE> [<DIRECTORIO>]
El comando anterior, creará un repositorio git en local y obtendrá una copia de todos los ficheros del repositorio local. Además, se habrá creado el remote.
Si nos hemos bajado una copia de una rama que no tenemos en local, “saltamos” a esa rama:
git checkout develop
No solo saltaremos a esa rama, sino que la creará.
Si queremos vincular nuestra rama master local con la rama master remota:
git branch --set-upstream-to origin/master
Si hacemos esta asociación, podemos usar git push de forma más abreviada:
git push
Si estamos en master, el comando anterior sabrá que estamos vinculados con origin/master.
Para ver la asociación de ramas locales y remotas, ejecutamos git branch -vv
Push, fetch y pull
Comunicación con el remoto
Poniendo en práctica la sincronización con el remoto
Comandos para comunicarnos con el remoto
Conclusión
Recursos
- Capítulo del libro Pro Git sobre remotos:
