Estoy usando un repositorio Git intermedio para reflejar un repositorio SVN remoto, desde el cual las personas pueden clonar y trabajar. El repositorio intermedio tiene su rama maestra rebaseada todas las noches desde el SVN ascendente, y estamos trabajando en ramas de características. Por ejemplo:
remote:
master
local:
master
feature
Puedo empujar con éxito mi rama de características al control remoto y terminar con lo que espero:
remote:
master
feature
local:
master
feature
Luego vuelvo a configurar la rama para rastrear el control remoto:
remote:
master
feature
local:
master
feature -> origin/feature
Y todo esta bien. Lo que me gustaría hacer desde aquí es cambiar la base de la rama de características a la rama maestra en el control remoto, pero me gustaría hacerlo desde mi máquina local. Me gustaría poder hacer:
git checkout master
git pull
git checkout feature
git rebase master
git push origin feature
Para mantener la rama de funciones remotas actualizada con el maestro remoto. Sin embargo, este método hace que Git se queje:
To <remote>
! [rejected] feature -> feature (non-fast-forward)
error: failed to push some refs to '<remote>'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again. See the
'Note about fast-forwards' section of 'git push --help' for details.
git pull
hace el truco pero provoca una confirmación de fusión que me gustaría evitar. Me preocupa que el mensaje indique feature -> feature
más que, feature -> origin/feature
pero esto puede ser solo una presentación.
¿Me estoy perdiendo algo o hago esto de una manera completamente incorrecta? No es crítico evitar hacer el rebase en el servidor remoto, pero hace que arreglar cualquier conflicto de fusión del rebase sea mucho más difícil.