repositorio remote remota rama origin example eliminar git git-branch git-remote

remote - ¿Cómo elimino una sucursal de Git de forma local y remota?



git push example (30)

Quiero eliminar una rama tanto localmente como en mi proyecto remoto en GitHub .

Intentos fallidos para eliminar la rama remota

$ git branch -d remotes/origin/bugfix error: branch ''remotes/origin/bugfix'' not found. $ git branch -d origin/bugfix error: branch ''origin/bugfix'' not found. $ git branch -rd origin/bugfix Deleted remote branch origin/bugfix (was 2a14ef7). $ git push Everything up-to-date $ git pull From github.com:gituser/gitproject * [new branch] bugfix -> origin/bugfix Already up-to-date.

¿Qué debo hacer de manera diferente para eliminar con éxito los remotes/origin/bugfix branch tanto localmente como en GitHub?


Las respuestas cortas

Si desea explicaciones más detalladas de los siguientes comandos, consulte las respuestas largas en la siguiente sección.

Eliminar una rama remota:

git push origin --delete <branch> # Git version 1.7.0 or newer git push origin :<branch> # Git versions older than 1.7.0

Eliminar una sucursal local:

git branch --delete <branch> git branch -d <branch> # Shorter version git branch -D <branch> # Force delete un-merged branches

Eliminar una rama local de seguimiento remoto:

git branch --delete --remotes <remote>/<branch> git branch -dr <remote>/<branch> # Shorter git fetch <remote> --prune # Delete multiple obsolete tracking branches git fetch <remote> -p # Shorter

La Respuesta Larga: hay 3 ramas diferentes para eliminar!

Cuando se trata de eliminar sucursales de forma local y remota, tenga en cuenta que hay 3 sucursales diferentes involucradas :

  1. La rama local X
  2. La rama de origen remoto X
  3. El origin/X rama de seguimiento remoto local que rastrea la rama X remota.

El cartel original utilizado.

git branch -rd origin/bugfix

que solo eliminó su origin/bugfix rama de seguimiento remoto local , y no la bugfix de bugfix rama remota real en el origin .

Para eliminar esa rama remota real , necesita

git push origin --delete bugfix

Detalles adicionales

Las siguientes secciones describen los detalles adicionales que se deben tener en cuenta al eliminar sus sucursales remotas y de seguimiento remoto.

Al pulsar para eliminar las ramas remotas también se eliminan las ramas de seguimiento remoto

Tenga en cuenta que eliminar la rama X remota de la línea de comando con un git push también eliminará el origin/X rama de seguimiento remoto local , por lo que no es necesario eliminar la rama de seguimiento remoto obsoleta con git fetch --prune o git fetch -p , aunque no dolería si lo hicieras de todos modos.

Puede verificar que el origin/X rama de seguimiento remoto también se eliminó ejecutando lo siguiente:

# View just remote-tracking branches git branch --remotes git branch -r # View both strictly local as well as remote-tracking branches git branch --all git branch -a

Poda el origen de la rama de seguimiento remoto local obsoleto / X

Si no eliminó su rama X remota de la línea de comando (como arriba), entonces su repositorio local seguirá conteniendo (una fuente ahora obsoleta) la rama origin/X seguimiento remoto. Esto puede suceder si elimina una sucursal remota directamente a través de la interfaz web de GitHub, por ejemplo.

Una forma típica de eliminar estas ramas de seguimiento remoto obsoletas (desde la versión 1.6.6 de Git) es simplemente ejecutar git fetch con --prune o --prune -p . Tenga en cuenta que esto elimina todas las ramas de seguimiento remoto locales obsoletas para cualquier rama remota que ya no existe en el control remoto :

git fetch origin --prune git fetch origin -p # Shorter

Aquí está la cita relevante de las notas de la versión 1.6.6 (énfasis mío):

"git fetch" aprendió las opciones --multiple y --multiple , para ejecutar la búsqueda desde muchos repositorios, y la opción --prune para eliminar las ramas de seguimiento remotas que quedaron obsoletas. Esto hace que la "actualización remota de git" y la "poda remota de git" sean menos necesarias (aunque no hay un plan para eliminar la "actualización remota" ni la "poda remota").

Alternativa a la poda automática anterior para ramas obsoletas de seguimiento remoto

Como alternativa, en lugar de podar sus sucursales obsoletas de seguimiento remoto a través de git fetch -p , puede evitar realizar la operación adicional de la red simplemente eliminando manualmente las sucursales con las --remote o -r :

git branch --delete --remotes origin/X git branch -dr origin/X # Shorter

Ver también


Resumen ejecutivo

$ git push --delete <remote_name> <branch_name> $ git branch -d <branch_name>

Tenga en cuenta que en la mayoría de los casos el nombre remoto es origin .

Eliminar sucursal local

Para eliminar la rama local use uno de los siguientes:

$ git branch -d branch_name $ git branch -D branch_name

Nota: La opción -d es un alias para --delete , que solo elimina la rama si ya se ha fusionado completamente en su rama ascendente. También puede usar -D , que es un alias para --delete --force , que elimina la rama "independientemente de su estado fusionado". [Fuente: man git-branch ]

Delete Remote Branch [Actualizado el 8-Sep-2017]

A partir de Git v1.7.0 , puede eliminar una rama remota usando

$ git push <remote_name> --delete <branch_name>

lo que podría ser más fácil de recordar que

$ git push <remote_name> :<branch_name>

que se agregó en Git v1.5.0 "para eliminar una rama remota o una etiqueta".

A partir de Git v2.8.0 también puede usar git push con la opción -d como alias para --delete .

Por lo tanto, la versión de Git que haya instalado determinará si necesita usar la sintaxis más fácil o más difícil.

Eliminar rama remota [Respuesta original del 5 de enero de 2010]

Del capítulo 3 de Pro Git por Scott Chacon:

Eliminar sucursales remotas

Supongamos que ha terminado con una rama remota; digamos, usted y sus colaboradores han terminado con una función y la han combinado en la rama maestra de su control remoto (o en cualquier rama en la que se encuentre la línea de código estable). Puede eliminar una rama remota usando la sintaxis bastante obtusa git push [remotename] :[branch] . Si desea eliminar su rama serverfix del servidor, ejecute lo siguiente:

$ git push origin :serverfix To [email protected]:schacon/simplegit.git - [deleted] serverfix

Auge. No más sucursales en tu servidor. Es posible que desee escuchar esta página, porque necesitará ese comando, y probablemente olvidará la sintaxis. Una forma de recordar este comando es recordando la git push [remotename] [localbranch]:[remotebranch] que revisamos un poco antes. Si dejas de lado la parte [localbranch] , entonces básicamente estás diciendo: "No tomes nada de mi parte y haz que sea [remotebranch] ".

Emití git push origin :bugfix y funcionó a la perfección. Scott Chacón tenía razón: querría escuchar esa página (o prácticamente una oreja de perro al responder esto en ).

Entonces deberías ejecutar esto en otras máquinas.

git fetch --all --prune

para propagar los cambios.


Pasos para eliminar una rama:

para borrar la rama remota:

git push origin --delete <your_branch>

Para eliminar la sucursal local , tienes tres formas:

1: git branch -D <branch_name> 2: git branch --delete --force <branch_name> //same as -D 3: git branch --delete <branch_name> //error on unmerge

Explique: OK, solo explique lo que está pasando aquí!

Simplemente haga git push origin --delete para eliminar su rama remota SOLAMENTE , agregue el nombre de la rama al final y esto se eliminará y lo empujará a control remoto al mismo tiempo ...

Además, git branch -D , que simplemente elimina la rama local SOLAMENTE ! ...

-D significa --delete --force que eliminará la rama incluso si no está fusionada (forzar eliminar), pero también puede usar -d que significa --delete que arroja un error respectivo del estado de combinación de la rama ...

También creo la imagen de abajo para mostrar los pasos:


Además de las otras respuestas, a menudo uso la herramienta git_remote_branch . Es una instalación adicional, pero le brinda una forma conveniente de interactuar con sucursales remotas. En este caso, para eliminar:

grb delete branch

Me parece que también uso los comandos de publish y track bastante frecuencia.


Ahora puedes hacerlo con la aplicación GitHub Desktop .

Después de lanzar la aplicación

  1. Haga clic en el proyecto que contiene la rama.
  2. Cambie a la rama que desea eliminar
  3. En el menú "Rama", seleccione "Anular publicación ..." para eliminar la bifurcación de los servidores de GitHub.
  4. En el menú "Sucursal", selecciona "Eliminar" nombre de sucursal "..." para eliminar la sucursal de tu máquina local (también conocida como la máquina en la que estás trabajando actualmente)

Antes de ejecutar

git branch --delete <branch>

asegúrese de determinar primero cuál es el nombre EXACTO de la rama remota ejecutando:

git ls-remote

Esto le dirá qué debe introducir EXACTAMENTE para el valor de <branch> . (¡La branch es sensible a mayúsculas!)


Consejo: Cuando borres ramas usando

git branch -d <branchname> # deletes local branch

o

git push origin :<branchname> # deletes remote branch

solo se borran las referencias. A pesar de que la rama se elimina realmente en el control remoto, las referencias a ella todavía existen en los repositorios locales de los miembros de su equipo. Esto significa que para otros miembros del equipo, las ramas eliminadas aún son visibles cuando hacen una git branch -a .

Para resolver esto, los miembros de su equipo pueden podar las ramas eliminadas con

git remote prune <repository>

Esto suele ser git remote prune origin .


Desde enero de 2013, GitHub incluyó un botón Eliminar rama junto a cada rama en su página de "Ramas".

Publicación de blog relevante: crear y eliminar ramas


Eliminar rama remota

git push origin :<branchname>

Eliminar rama local

git branch -D <branchname>

Eliminar los pasos de la rama local:

  1. Salida a otra sucursal
  2. eliminar rama local

Esto es simple: simplemente ejecute el siguiente comando:

Para eliminar una sucursal de Git local y remotamente, primero elimine la sucursal local usando el comando:

git branch -d example

(aquí el example es el nombre de la rama)

Y después de eso elimine la rama remota usando el comando:

git push origin :example


Esto no funcionará si tiene una etiqueta con el mismo nombre que la rama en el control remoto:

$ git push origin :branch-or-tag-name error: dst refspec branch-or-tag-name matches more than one. error: failed to push some refs to ''[email protected]:SomeName/some-repo.git''

En ese caso, debe especificar que desea eliminar la rama, no la etiqueta:

git push origin :refs/heads/branch-or-tag-name

Del mismo modo, para eliminar la etiqueta en lugar de la rama que utilizarías:

git push origin :refs/tags/branch-or-tag-name


La respuesta de Matthew es excelente para eliminar ramas remotas y también aprecio la explicación, pero para hacer una distinción simple entre los dos comandos:

Para eliminar una sucursal local de su máquina:

git branch -d {the_local_branch} (use -D lugar para forzar la eliminación de la rama sin verificar el estado fusionado)

Para eliminar una rama remota del servidor:

git push origin --delete {the_remote_branch}

Referencia: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


Mashup de todas las otras respuestas. Requiere Ruby 1.9.3+, probado solo en OS X.

Llame a este archivo git-remove , conviértalo en ejecutable y póngalo en su ruta. Luego usa, por ejemplo, git remove temp .

#!/usr/bin/env ruby require ''io/console'' if __FILE__ == $0 branch_name = ARGV[0] if (ARGV[0]) print "Press Y to force delete local and remote branch #{branch_name}..." response = STDIN.getch if [''Y'', ''y'', ''yes''].include?(response) puts "/nContinuing." `git branch -D #{branch_name}` `git branch -D -r origin/#{branch_name}` `git push origin --delete #{branch_name}` else puts "/nQuitting." end end


Me cansé de buscar en Google para esta respuesta, por lo que adopté un enfoque similar a la respuesta que publicaba anteriormente.

Agregué lo siguiente a mi perfil de Bash:

function gitdelete(){ git push origin --delete $1 git branch -D $1 }

Luego, cada vez que termino con una rama (fusionada en master , por ejemplo) ejecuto lo siguiente en mi terminal:

gitdelete my-branch-name

... que luego elimina my-branch-name desde el origin , así como a nivel local.


Muchas de las otras respuestas conducirán a errores / advertencias. Este enfoque es relativamente some_other_branch , aunque es posible que aún necesite git branch -D branch_to_delete si no está completamente fusionado en some_other_branch , por ejemplo.

git checkout some_other_branch git push origin :branch_to_delete git branch -d branch_to_delete

No se necesita la poda remota si elimina la rama remota. Solo se utiliza para obtener los controles remotos más actualizados disponibles en un repositorio que está siguiendo. He observado que git fetch agregará controles remotos, no los eliminará. Aquí hay un ejemplo de cuando git remote prune origin realmente hará algo:

El usuario A realiza los pasos anteriores. El usuario B ejecutaría los siguientes comandos para ver las sucursales remotas más actualizadas

git fetch git remote prune origin git branch -r


Otro enfoque es

git push --prune origin

ADVERTENCIA: Esto eliminará todas las ramas remotas que no existen localmente. O más ampliamente,

git push --mirror

efectivamente hará que el repositorio remoto se vea como la copia local del repositorio (los jefes locales, los controles remotos y las etiquetas se reflejan en el control remoto).


Para eliminar su sucursal localmente y remotamente

  • Checkout to master branch - git checkout master

  • Elimine su rama remota - git push origin --delete <branch-name>

  • Elimine su sucursal local - rama de git branch --delete <branch-name> - git branch --delete <branch-name>


Si desea completar estos dos pasos con un solo comando, puede crear un alias para ello agregando lo siguiente a su ~/.gitconfig :

[alias] rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

Alternativamente, puede agregar esto a su configuración global desde la línea de comando usando

git config --global alias.rmbranch / ''!f(){ git branch -d ${1} && git push origin --delete ${1}; };f''

NOTA : Si utiliza -d (d minúscula), la rama solo se eliminará si se ha fusionado. Para forzar la eliminación, tendrá que usar -D (D mayúscula).


Si desea eliminar una rama, primero realice el proceso de pago en la rama que no sea la rama que desea eliminar.

git checkout other_than_branch_to_be_deleted

Eliminando la sucursal local:

git branch -D branch_to_be_deleted

Eliminando la rama remota:

git push origin --delete branch_to_be_deleted


Simplemente diga:

git branch -d <branch-name> git push origin :<branch-name>


También puede utilizar lo siguiente para eliminar la rama remota.

git push --delete origin serverfix

Lo que hace lo mismo que

git push origin :serverfix

pero puede ser más fácil de recordar.


También puedes hacer esto usando git remote prune origin :

$ git remote prune origin Pruning origin URL: [email protected]/yourrepo.git * [pruned] origin/some-branchs

Se poda y elimina las ramas de seguimiento remoto de una lista de git branch -r .


Uso lo siguiente en mi configuración de Bash :

alias git-shoot="git push origin --delete"

Entonces puedes llamar:

git-shoot branchname


Borrando ramas

Asumamos que nuestro trabajo en la rama "formulario de contacto" está terminado y ya lo hemos integrado en "maestro". Como ya no lo necesitamos, podemos eliminarlo (localmente):

$ git branch -d contact-form

Y para borrar la rama remota:

git push origin --delete contact-form


Eliminar localmente:

Para eliminar una rama local, puede utilizar:

git branch -d branch_name

Para eliminar una rama por la fuerza, use -D lugar de -d .

git branch -D branch_name

Eliminar de forma remota:

Hay dos opciones:

git push origin :branchname git push origin --delete branchname

Le sugiero que utilice la segunda forma, ya que es más intuitivo.


Para eliminar localmente - (Normal),

git branch -d my_branch

Si su sucursal está en proceso de rebasar / fusionar y eso no se hizo correctamente significa que recibirá un Rebase/Merge in progress error Rebase/Merge in progress por lo que, en ese caso, no podrá eliminar su sucursal.

Entonces, ya sea su necesidad de resolver la reorganización / fusión, de lo contrario puede forzar la eliminación usando,

git branch -D my_branch

Para borrar en remoto:

git push --delete origin my_branch

puede hacer lo mismo usando,

git push origin :my_branch # easy to remember both will do the same.

Representación grafica,


Un comando de línea elimina tanto local como remoto :

D=branch-name; git branch -D $D; git push origin :$D

o agrega el alias a continuación a tu ~ / .gitconfig ; uso: git kill branch-name

[alias] kill = "!f(){ git branch -D /"$1/"; git push origin --delete /"$1/"; };f"


git branch -D <name-of-branch> git branch -D -r origin/<name-of-branch> git push origin :<name-of-branch>


git push origin --delete branchName

es más fácil de recordar que

git push origin :branchName


git push origin :bugfix # Deletes remote branch git branch -d bugfix # Must delete local branch manually

Si está seguro de que quiere borrarlo, ejecute

git branch -D bugfix

Ahora para limpiar las sucursales remotas ejecutadas

git remote prune origin