Cambiar el nombre de las sucursales de forma remota en Git
Si hay un repositorio al que solo tengo git://
acceso (y normalmente solo empuja y tira), ¿hay alguna manera de cambiar el nombre de las ramas en ese repositorio de la misma manera que lo haría localmente git branch -m
?
Sólo tiene que crear una nueva sucursal local con el nombre deseado, enviarla a su control remoto y luego eliminar la antigua sucursal remota:
$ git branch new-branch-name origin/old-branch-name
$ git push origin --set-upstream new-branch-name
$ git push origin :old-branch-name
Luego, para ver el nombre de la antigua rama, cada cliente del repositorio tendría que hacer:
$ git fetch origin
$ git remote prune origin
NOTA: Si su sucursal anterior es su sucursal principal, debe cambiar la configuración de su sucursal principal. De lo contrario, cuando ejecute $ git push origin :old-branch-name
, obtendrá el error "prohibida la eliminación de la rama actual" .
Si realmente solo desea cambiar el nombre de las sucursales de forma remota, sin cambiar el nombre de ninguna sucursal local al mismo tiempo , puede hacerlo con un solo comando:
git push <remote> <remote>/<old_name>:refs/heads/<new_name> :<old_name>
Escribí este script ( git-rename-remote-branch ) que proporciona un atajo útil para hacer lo anterior fácilmente.
Como función de bash:
git-rename-remote-branch() {
if [ $# -ne 3 ]; then
echo "Rationale : Rename a branch on the server without checking it out."
echo "Usage : ${FUNCNAME[0]} <remote> <old name> <new name>"
echo "Example : ${FUNCNAME[0]} origin master release"
return 1
fi
git push $1 $1/$2\:refs/heads/$3 :$2
}
Para integrar el comentario de @ksrb : lo que esto hace básicamente son dos pulsaciones en un solo comando, primero git push <remote> <remote>/<old_name>:refs/heads/<new_name>
para enviar una nueva rama remota basada en la antigua rama de seguimiento remoto y luego git push <remote> :<old_name>
para eliminar la antigua rama remota.
Primer pago en la sucursal cuyo nombre desea cambiar:
git branch -m old_branch new_branch
git push -u origin new_branch
Para eliminar una rama antigua de remote
:
git push origin :old_branch
Seguro. Simplemente cambie el nombre de la rama localmente, inserte la nueva rama y elimine la anterior.
El único problema real es que a otros usuarios del repositorio no se les cambiará el nombre de las ramas de seguimiento locales.