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.