Tengo un servidor Git (en GitLab), al que solo tengo acceso de escritura a la branch devel
. Por diversos motivos, tengo otro servidor Git en una máquina distinta (myserver
). Este último se creó mediante la orden
git clone --bare https://GITLAB.URL/PATH/TO/REPO
y puedo acceder a él mediante la URL ssh://MISERVER/PATH/TO/REPO
.
En mi máquina local, cloné desde myserver
:
git clone ssh://myserver/repo.git
Desde ese momento, uso exclusivamente el repo en myserver
: push
, pull
, ... todo ello sin problemas, y siempre en la branch devel
.
Ahora, tengo que sincronizar ambos repos. Para ello, entro por ssh
a myserver
, y, con el usuario adecuado, intento:
git fetch -v origin devel
Username for 'https://gitlab.com': ****
Password for 'https://username@gitlab.com': ****
From https://gitlab.com/path/to/repo
* branch devel -> FETCH_HEAD
No se muestra ningún error. A continuación, hago:
git push -v origin devel
Pushing to https://gitlab.com/path/to/repo.git
Username for 'https://gitlab.com': ****
Password for 'https://username@gitlab.com': ****
To https://gitlab.com/path/to/repo.git! [rejected] devel -> devel (non-fast-forward)
error: failed to push some refs to 'https://gitlab.com/path/to/repo.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
En resumen:
- repo1: maquina en gitlab (
--bare
). - repo2: maquina en myserver (
--bare
). - repo3: mi equipo de desarrollo (máquina local,
git clone
normal, no--bare
).
Flujo de trabajo normal:
repo3 -> pull from repo2, push to repo2.
Flujo de trabajo ocasional, objetivo de la pregunta:
repo2 -> pull from repo1, push to repo1.
El repo2 se creó usando git clone --bare
. Es decir, no tiene copia de trabajo y no puedo ejecutar git pull
en él.
En el repo2, el git fetch
se ejecuta aparentemente sin errores. Sin embargo, el commando git push
si muestra errores y no se realiza.
¿ Que estoy haciendo mal ?
¿ Cómo lo soluciono ?