2011-01-15 9 views
14

Tenemos una rama 'dev' que ha estado funcionando como maestro de facto durante bastante tiempo.Git hace punto maestro remoto a otra rama

¿Hay alguna manera de hacer que mi control remoto/maestro indique el mismo lugar que el control remoto/dev? (sin fusión/rebase/trabajo adicional).

(más o menos un cambio de nombre de dev para maestro)

Gracias de antemano

Respuesta

19

Pedido rama principal, restablecerla a dev, empujar. Esto afectará a los usuarios descendentes que puedan tener ramas fuera de su control remoto/maestro.

git checkout master 

git reset --hard remote/dev 

git push -f 

Esto hará que se pierda ningún commit que ha realizado desde el mando a distancia y dev divergieron, pero el resultado final será con el mismo estado que a distancia/dev.

+0

Sólo para verificar - Voy a perder todas las confirmaciones de dominar, pero mantener toda la historia de la rama de desarrollo? – Boris

+0

Sí, estoy seguro. – RJFalconer

+0

Esto funcionó para mí, y luego usé la forma de @Roman para eliminar la rama anterior con 'origen git push: refs/head/dev' – knocte

6

Suponiendo que el mando a distancia se llama origin,

git push origin +origin/dev:refs/heads/master 

Entonces, si usted quiere también eliminar dev:

git push origin :refs/heads/dev 
+1

Probablemente también querrás mover tu maestro local, probablemente con un restablecimiento completo. (En ese momento podría haber hecho lo que sugirió RJFalconer.) – Cascabel

+1

@Jefromi: hace muchas más suposiciones sobre la estructura del repositorio local. Por ejemplo, no es difícil imaginar que la rama 'maestra' local simplemente no existe, si no ha habido actividad en el' maestro' del upstream. En general, el mapeo entre las sucursales locales y remotas es arbitrario, aunque la mayoría de las personas tienden a mantenerlo simple. –

+0

Un punto válido. Supuse que tendría un "maestro" para que coincida con su "control remoto/maestro". No es una gran suposición, pero una suposición, sin embargo. – RJFalconer

Cuestiones relacionadas