Sincronizar dos repositorios de git
Sincronizar dos repositorios con todas sus ramas es fácil pero encontrarlo en Google es realmente difícil.
Nosotros lo usamos en jobs de Jenkins para sincronizar los repositorios de nuestro gitlab con los del servidor de turno de git del cliente. |
![]() |
Pasos:
- Crear un repositorio
- Agregar remote 1
- Agregar remote 2
- Bajar remote 1
- Bajar remote 2
- Subir remote 1
- Subir remote 2
- Subir remote 1
Y en código
git init repositorio git remote add origin https://git.server1.com/usuario/repositorio.git git remote add upstream https://git.server2.com/usuario/repositorio.git git fetch -a origin git fetch -a upstream git push upstream "refs/remotes/origin/*:refs/heads/*" git push origin "refs/remotes/origin/*:refs/heads/*"
solución de conflictos
Si da algún conflicto del tipo:
! [rejected] origin/develop -> develop (non-fast-forward) error: failed to push some refs to 'https://git.server1.com/usuario/repositorio.git' consejo: Updates were rejected because a pushed branch tip is behind its remote consejo: counterpart. Check out this branch and integrate the remote changes consejo: (e.g. 'git pull ...') before pushing again. consejo: See the 'Note about fast-forwards' in 'git push --help' for details.
Vas al repositorio que tu sepas más desactualizado, eliminas la rama que tenga el contenido más viejo y le das a actualizar o haces un merge manual y o bien reduces el tiempo de sincronización entre repositorios o bien usas solo uno de los dos.
En mi caso el job de Jenkins se ejecuta cada minuto y no estamos teniendo conflictos.
Adjunto | Tamaño |
---|---|
![]() | 4.2 KB |