2011-08-16 9 views
35

Tengo 2 ramas de git: maestra y experimental.Cambiar el nombre de la rama remota de git

Experimental se hizo bueno, quiero hacerlo el maestro. Pensé que podría cambiar el nombre de mezclar las cosas, pero aquí es lo que tengo:

nutebook:Stuff nathan$ git remote rename master old 
error: Could not rename config section 'remote.master' to 'remote.old' 

utilizo GitHub y Git-Torre.

Respuesta

56

La siguiente es una guía para cambiar el nombre de su rama principal. Funcionará igual de fácil para cambiar el nombre de su rama experimental.

Así es como hice el cambio de nombre.

Primero, en su árbol de trabajo, renombre localmente el maestro a algo else.

git branch -m master old-dev 

Cambiar el nombre de una rama funciona mientras está en la rama, por lo no hay necesidad de pago y envío otra cosa.

Entonces, cambie el nombre localmente la rama de mantenimiento (2,63-rama) para master:

git branch -m 2.63-branch master 

Ahora, el tiempo para meterse con el mando a distancia. En caso de que se equivoque, es posible que desee asegurarse de tener una copia de seguridad actual. En primer lugar, eliminar el maestro del mando a distancia:

git push origin :master 

Y ahora, dar el mando a distancia de su nuevo amo:

git push origin master:refs/heads/master 

Actualización: Al crear una nueva rama, la refs/heads/prefijo es necesario en el lado remoto. Si la rama ya existe (como lo hizo el maestro arriba), solo se requiere el nombre de la sucursal en el lado remoto.

... y ahora se llama su maestro de edad:

git push origin old-dev:refs/heads/old-dev 

Por último, eliminar el antiguo nombre de la rama de mantenimiento para evitar la confusión :

git push origin :2.63-branch 

clientes ahora tendrán la ' nueva 'rama principal cuando tiran.

ver this sitio.

+7

Para agregar a esto: cuando quería cambiar el nombre de mi 'maestro' en github, primero tuve que cambiar la rama predeterminada en 'configuración' antes de que me permitiera eliminarla (es decir, 'git push origin: master'). –

+0

¿Puedes cambiar el nombre de la rama localmente y llevarla a remoto y luego eliminar la anterior? –

+1

Creo que la opción -u flag to push es buena porque establece el seguimiento ascendente del nuevo control remoto para usted, p. Ej. 'git push -u origin master' (usando git 1.7 no necesitaba el prefijo completo refs/heads) –

1

master es una sucursal, no un control remoto como origin es. si usted quiere tener su trabajo experimental a su rama principal, sólo tiene que fusionar en:

git checkout master 
git merge experimental 
0

Lo que se trató de hacer fue cambiar el nombre de un acuerdo de recompra a distancia de "maestro" a "viejo". Para cambiar el nombre de una rama en otro repositorio, simplemente elimínelo con

git push <remote> :<branch name> 

y luego empújelo como algo más.

4

Creo que la manera más fácil es verificar la rama experimental, eliminar la rama maestra remota, luego empujar la experimental local como la nueva maestra remota.

// delete the remote master branch by pushing null 
// (the space in front of the semicolon) in this branch 
git push origin :master 
// push local experimental to remote master 
git push origin experimental:master 
1

Si usted es un usuario de Mac, puede utilizar el GitHub Mac App (https://mac.github.com/) para cambiar el nombre de ramas.

Cuestiones relacionadas