Cómo usar git con múltiples repositorios remotos

Contenidos

Logotipo de Git

git se puede configurar para empujar y extraer desde muchas ubicaciones al mismo tiempo, lo que le posibilita almacenar su código en dos plataformas diferentes mientras solo mantiene una copia local. Aquí se explica cómo configurarlo.

Mandos a distancia, explicado

El «remoto» de una sucursal es una URL desde donde su git el repositorio recupera los cambios. Tu local git el repositorio es totalmente suyo, no se ve afectado por el código de otras personas hasta que envían sus confirmaciones al control remoto. Con suerte, todos están usando el mismo control remoto y todo se sincroniza, pero el control remoto es solo un punto final. Puede clonar ese punto final y cambiar a un nuevo control remoto sin muchos problemas.

Siempre que clona un nuevo repositorio, el control remoto predeterminado se establece como «origen». Puede hallar los controles remotos para cualquier git repositorio ejecutando:

git remote -v

Esto probablemente mostrará la URL de su repositorio principal en GitHub o cualquier servicio que esté usando. Si cuenta con varios controles remotos, además aparecerán aquí.

Pero solo debido a que origin es el control remoto predeterminado, no significa que esté limitado a uno. ¿Por qué querrías dos controles remotos? Bueno, un buen caso de uso es el de AWS CodeCommit. Es un alojado git repositorio, y tiene muchas integraciones con su plataforma de cómputo EC2, lo que posibilita implementaciones de código automatizadas en sus servidores, de forma directa desde el control de fuente.

A pesar de esto, CodeCommit es bastante torpe en comparación con más centrado git proveedores como GitHub, GitLab y BitBucket, y no tiene las mismas integraciones de CI / CD que hacen que esos proveedores sean excelentes. Por eso, está atrapado en un dilema: use CodeCommit como predeterminado git solución o cree usted mismo su canal de implementación de código automatizado.

A pesar de esto, con bastantes controles remotos, puede enviar código fácilmente a un segundo repositorio. Siempre que desee actualizar sus servidores, puede enviar los cambios desde su control de fuente principal a CodeCommit para iniciar la canalización de implementación.

Configuración de varios controles remotos

Usando git de esta manera es bastante simple. Agrega controles remotos de la misma manera que empujaría una carpeta existente, excepto que en lugar de agregar el control remoto «origen», le da un nombre distinto.

git remote add <name> <dirección url>

Después, cuando desee presionar al segundo control remoto, agregue el nombre remoto y la rama a su comando push:

git push second master

O cambie el control remoto predeterminado usando --set-upstream:

git push --set-upstream second master

Esta es la configuración más simple, a pesar de esto, necesita que pase el nombre del control remoto como argumento o cambie el control remoto cada vez.

Verdaderamente, si está usando una configuración de dos remotos, probablemente querrá una mejor manera de administrar el código de inserción en su segundo control remoto. La mejor manera de manejar esto en git es crear otra rama para el código enviado al segundo flujo ascendente, como las implementaciones en AWS CodeCommit.

Puedes crear una rama con checkout -b:

git checkout -b deployment

Después, agregue el control remoto de implementación:

git remote add deployment <dirección url>

y busca la rama maestra:

git fetch deployment master

Después, puede configurar el flujo ascendente para la rama actual ejecutando:

git branch --set-upstream-to=deployment/master

Puede repetir este procedimiento para cualquier número de sucursales, lo que lo convierte en un excelente método para realizar un seguimiento de varios controles remotos. A pesar de esto, recuerde que esta es solo una configuración local, por lo que si envía esta rama a su repositorio principal, los demás no tendrán sus copias de la rama de implementación configuradas para utilizar el segundo control remoto automáticamente.

Sería ideal si la segunda rama es solo de una manera, lo que significa que solo está presionando código, no extrayendo código nuevo; caso contrario, puede encontrarse con conflictos inesperados. Aparte de eso, git funciona estupendamente bien con bastantes mandos a distancia.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.