repositorio remote remotas ramas rama origin nombre listar cambiar git branch rename

remotas - git remote



git: cambiar el nombre de las ramas de forma remota? (9)

TL; DR

"Cambiar el nombre" de una rama remota es en realidad un proceso de 2 pasos (no necesariamente ordenado):

  • eliminación de la rama remota anterior ( git push [space]:<old_name> como se explica ksrb );
  • empujar en una nueva rama remota (diferencia entre un par de comandos de respuestas a continuación).

Borrando

Utilizo TortoiseGit y cuando intenté eliminar la rama por primera vez a través de la línea de comandos, obtuve esto:

$ git push origin :in

  • fatal: ''origen'' no parece ser un repositorio git

  • fatal: no se pudo leer desde el repositorio remoto.

Asegúrese de que tiene los derechos de acceso correctos y el repositorio existe.

Esto probablemente se debió a que el concurso no tenía la clave privada cargada (que TortoiseGit carga automáticamente en el concurso ). Además, noté que los comandos de TortoiseGit no tienen la referencia de origin en ellos (por ejemplo, git.exe push --progress "my_project" interesting_local:interesting ).

También estoy usando Bitbucket y, como otros administradores de git en línea basados ​​en la web (GitHub, GitLab), pude eliminar la sucursal remota directamente a través de su interfaz (página de sucursales):

Sin embargo, en TortoiseGit también puede eliminar sucursales remotas a través de Buscar referencias :

Al hacer clic con el botón derecho en una rama remota (lista de controles remotos), aparece la opción Eliminar rama remota :

Emprendedor

Después de eliminar la rama remota anterior, ingresé directamente en una nueva rama remota a través de TortoiseGit simplemente escribiendo el nuevo nombre en el campo Remoto: de la ventana Push y esta rama se creó automáticamente y se pudo ver en Bitbucket .

Sin embargo, si aún prefiere hacerlo manualmente, un punto que aún no se ha mencionado en este hilo es que -u = --set-upstream .

Desde git push docs , -u es solo un alias de --set-upstream , por lo que los comandos en las respuestas de Sylvain ( -set-upstream new-branch ) y Shashank ( -u origin new_branch ) son equivalentes, desde la referencia remota por defecto al origin si no se definió previamente ninguna otra referencia:

  • git push origin -u new_branch = git push -u new_branch desde la descripción de la documentación :

    Si falta la configuración, el valor predeterminado es origin .

Al final, no escribí ni usé manualmente ninguno de los comandos sugeridos por las otras respuestas aquí, así que quizás esto pueda ser útil para otros en una situación similar.

Si hay un repositorio al que solo tengo acceso git: // (y normalmente solo presionaría + tirar), ¿hay una manera de cambiar el nombre de las sucursales en ese repositorio de la misma manera que lo haría localmente con git branch -m ?


Agregando a las respuestas ya dadas, aquí hay una versión que primero verifica si la nueva sucursal ya existe (para que pueda usarla de manera segura en un script)

if git ls-remote --heads "$remote" / | cut -f2 / | sed ''s:refs/heads/::'' / | grep -q ^"$newname"$; then echo "Error: $newname already exists" exit 1 fi git push "$oldname" "$remote/$oldname:refs/heads/$newname" ":$oldname"

(el cheque es de esta respuesta )


No sé por qué, pero la respuesta de @Sylvain Defresne no funciona para mí.

git branch new-branch-name origin/old-branch-name git push origin --set-upstream new-branch-name git push origin :old-branch-name

Tengo que desactivar el flujo ascendente y luego puedo configurar el flujo nuevamente. Lo siguiente es como lo hice.

git checkout -b new-branch-name git branch --unset-upstream git push origin new-branch-name -u git branch origin :old-branch-name


No sé si esto es correcto o incorrecto, pero presioné el "nombre antiguo" de la rama al "nuevo nombre" de la rama, luego eliminé la rama antigua completamente con las siguientes dos líneas:

git push origin old_branch:new_branch git push origin :old_branch


Por supuesto. Simplemente cambie el nombre de la rama localmente, luego presione la nueva rama y presione la eliminación de la antigua. El único problema real es que a otros usuarios del repositorio no se les cambiará el nombre a las sucursales locales de seguimiento.


Primer checkout a la rama que desea renombrar

git branch -m old_branch new_branch git push -u origin new_branch

Para quitar la rama vieja del control remoto:

git push origin :old_branch


Puede crear una nueva rama basada en la rama de nombre antiguo. Al igual que este, a continuación, elimine la rama de edad, sobre !!!


Si realmente solo desea cambiar el nombre de las sucursales de forma remota, sin cambiar el nombre de las sucursales locales 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 práctico para hacer lo anterior fácilmente.

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 empujar una nueva rama remota basada en el antiguo control remoto rama de seguimiento y luego git push <remote> :<old_name> para eliminar la rama remota anterior.


Solo tiene que crear una nueva sucursal local con el nombre deseado, insertarlo en su control remoto y luego eliminar la antigua rama 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 rama anterior, cada cliente del repositorio tendría que hacer:

$ git fetch origin $ git remote prune origin

NOTA: Si su rama antigua es su rama principal, debe cambiar la configuración de su rama principal. De lo contrario, cuando ejecute $ git push origin :old-branch-name , obtendrá el error "eliminación de la rama actual prohibida" .