Acabo de renombrar mi sucursal local usando
git branch -m oldname newname
pero esto solo cambia el nombre de la versión local de la rama. ¿Cómo puedo cambiar el nombre del de GitHub?
Acabo de renombrar mi sucursal local usando
git branch -m oldname newname
pero esto solo cambia el nombre de la versión local de la rama. ¿Cómo puedo cambiar el nombre del de GitHub?
Respuestas:
Como se mencionó, elimine el antiguo en Github y vuelva a presionar, aunque los comandos utilizados son un poco más detallados de lo necesario:
git push origin :name_of_the_old_branch_on_github
git push origin new_name_of_the_branch_that_is_local
Sencillo. Diseccionando un poco los comandos, el comando git push es esencialmente:
git push <remote> <local_branch>:<remote_branch>
Por lo tanto, hacer un push sin local_branch especificado esencialmente significa "no tomar nada de mi repositorio local y convertirlo en la rama remota". Siempre he pensado que esto es completamente grosero, pero así es como se hace.
Editar: a partir de Git 1.7 hay una sintaxis alternativa para eliminar una rama remota:
git push origin --delete name_of_the_remote_branch
Editar: según lo mencionado por @ void.pointer en los comentarios
Tenga en cuenta que puede combinar las 2 operaciones de inserción:
git push origin :old_branch new_branch
Esto eliminará la rama anterior y empujará la nueva.
Esto se puede convertir en un simple alias que toma la rama remota, original y el nuevo nombre de rama como argumentos, en ~/.gitconfig
:
[alias]
branchm = "!git branch -m $2 $3 && git push $1 :$2 $3 -u #"
Uso:
git branchm origin old_branch new_branch
Tenga en cuenta que los argumentos posicionales en los comandos de shell son problemáticos en versiones anteriores (anteriores a 2.8?) De git, por lo que el alias puede variar según la versión de git. Vea esta discusión para más detalles.
git push origin :old_branch new_branch
. Esto eliminará la rama anterior y empujará la nueva.
git branch -m new_branch
(cambie el nombre de old_branch a new_branch) 2. git commit -m 'msg'
, 3. git push
4. Mhmm, old_branch aparece en Github, pregunta de Google y me llevan a su respuesta 5. git push origin :old_branch
(dice que se eliminó) 6. git push origin new_branch
... completa y luego dice * [new branch] new_branch -> old_branch
. Vuelve a Github y old_branch
vuelve a aparecer. Si elimino en la interfaz de usuario web de Github, tengo la opción de "Restaurar", por lo que parece que presionar new_branch es solo restaurar.
Los siguientes comandos me funcionaron:
git push origin :old-name-of-branch-on-github
git branch -m old-name-of-branch-on-github new-name-for-branch-you-want
git push origin new-name-for-branch-you-want
Encontré 3 comandos para cambiar el nombre de la rama de git, y estos comandos son una forma más rápida de hacerlo
git branch -m old_branch new_branch # Rename branch locally
git push origin :old_branch # Delete the old branch
git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote
Si necesita paso a paso, puede leer este gran artículo
Cómo cambiar el nombre de las ramas locales y remotas de Git
git push --set-upstream
es la parte más importante si cambia el nombre de la sucursal localmente usando la aplicación github antes de eliminar la sucursal remota.
Simplemente elimine la rama anterior y cree una nueva.
Ejemplo (renombrar únicamente la rama remota):
git push origin :refs/heads/oldname
git push origin newname:refs/heads/newname
Probablemente también debería cambiar el nombre de la sucursal local y cambiar la configuración de dónde empujar / tirar.
git push origin newname:refs/heads/newname
? master y newname pueden no apuntar a la misma confirmación.
1. Cambie el nombre de su sucursal local.
Si está en la rama que desea renombrar:
git branch -m new-name
Si estás en una rama diferente:
git branch -m old-name new-name
2. Elimine la rama remota de nombre antiguo y presione la rama local de nombre nuevo.
git push origin :old-name new-name
3. Restablezca la rama ascendente para la rama local de nuevo nombre.
Cambie a la rama y luego:
git push origin -u new-name
Entonces la conclusión es
git branch -m new-name
git push origin :old-name new-name
git push origin -u new-name
git branch -m new-name && git push origin :master new-name
. Fallará. Si esta respuesta es solo sobre git y no sobre github, entonces esta pregunta es un duplicado de varias otras preguntas y debe cerrarse. Si realmente se trata de github, entonces la respuesta debe cubrir github. Esta respuesta no.
Puede hacerlo sin terminal, solo necesita crear una rama con el nuevo nombre y eliminar el anterior. Puedes usar esta publicación para hacer eso.
Este artículo muestra cómo hacerlo realmente fácil.
1. Para cambiar el nombre de una rama Git local, podemos usar el comando Git branch -m para modificar el nombre:
git branch -m feature1 feature2
2. Si solo está buscando el comando para cambiar el nombre de una rama Git remota, esta es "
git push -u origin feature2:feature3
Compruebe que no tiene etiquetas en la rama antes de hacer esto. Puede hacerlo con git tag
.
Otra forma es renombrar los siguientes archivos :
.git/refs/head/[branch-name]
a.git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/[branch-name]
a.git/refs/remotes/[all-remote-names]/new-branch-name
Cambie el nombre de cabezales y controles remotos tanto en su PC local como en los orígenes / servidores remotos
Si su nombre de rama actual contiene barras inclinadas ( /
), git creará los directorios así:
nombre de sucursal actual: "awe/some/branch"
.git/refs/head/awe/some/branch
.git/refs/remotes/[all-remote-names]/awe/some/branch
nombre de sucursal del deseo: "new-branch-name"
branch
archivo de.git/refs/*/awe/some/
.git/refs/head/
.branch
archivo de todos.git/refs/remotes/*/awe/some/
.git/refs/remotes/*/
.branch
archivos optados a new-branch-name
..git/refs/head/new-branch-name
.git/refs/remotes/[all-remote-names]/new-branch-name
awe/some/branch
a new-branch-name
(¡local y remoto!)Información: esta manera puede no ser la mejor, pero aún funciona para personas que pueden tener problemas con las otras formas
En mi caso, necesitaba un comando adicional
para que mi rama renombrada avanzara .
git branch --unset-upstream
origin newname
(Para facilitar la escritura), primero git checkout oldname
.
Luego ejecute lo siguiente:
git branch -m newname
git push origin :oldname
o ogit push origin --delete oldname
git branch --unset-upstream
git push -u origin newname
git push origin newname
Este paso adicional solo puede ser necesario porque (tiendo a) configurar el seguimiento remoto en mis sucursales a través de . De esta manera, cuando me he retirado, posteriormente solo necesito escribir en lugar degit push
-u
origin oldname
oldname
git push
git push origin oldname
Si NO uso el comando git branch --unset-upstream
antes git push origin newbranch
, git vuelve a crear oldbranch
y empuja newbranch
a origin oldbranch
- derrotando mi intención.
Los siguientes comandos cambian el nombre de la rama localmente, eliminan la rama vieja en la ubicación remota y presionan la nueva rama, configurando la rama local para rastrear el nuevo control remoto:
git branch -m old_branch new_branch
git push origin :old_branch
git push --set-upstream origin new_branch
Tan simple como eso . Para cambiar el nombre de git branch localmente y de forma remota, use este fragmento (probado y funciona de maravilla):
git branch -m <oldBranchName> <newBranchName>
git push origin :<oldBranchName>
git push --set-upstream origin <newBranchName>
Explicación:
Cambiar nombre de paso:
Referencia de Git: con una opción -m o -M , se le cambiará el nombre. Si tenía un reflog correspondiente, se renombra para que coincida, y se crea una entrada de reflog para recordar el cambio de nombre de la rama. Si existe, -M debe usarse para forzar el cambio de nombre.
Eliminar paso:
Referencia de Git: git push origin: experimental Encuentre una referencia que coincida con la experimental en el repositorio de origen (por ejemplo, referencias / cabezas / experimental) y elimínela.
Actualización en el paso de repositorio remoto (referencia ascendente para el seguimiento):
Referencia de Git: --set-upstream Para cada rama que esté actualizada o que se haya enviado correctamente, agregue la referencia de upstream (seguimiento), utilizada por git-pull [1] sin argumentos y otros comandos. Para obtener más información, consulte branch..merge en git-config [1].
cabeza de origen de empuje git
git branch -m nombre-rama-antiguo nombre-rama-nuevo
cabeza de origen de empuje git
En la rama git, ejecute git branch -m nombre_nuevo nombre_nuevo Esto modificará el nombre de la rama en su repositorio local git push origin: nombre_nuevo nombre_nuevo Esto empujará el nombre modificado a remoto y eliminará la rama antigua git push origin -u nombre_ nuevo Establece la rama local para rastrear rama remota Esto resuelve el problema