¿Cómo elimino una twig de Git tanto local como remotamente?

Quiero eliminar una twig tanto localmente como en mi bifurcación de proyectos remotos en GitHub .

Intentos fallidos para eliminar la sucursal 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 forma diferente para eliminar con éxito la twig de remotes/origin/bugfix tanto localmente como en GitHub?

Resumen ejecutivo

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

Eliminar la sucursal local

Para eliminar la sucursal 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 twig si ya se ha fusionado por completo en su twig ascendente. También podría usar -D , que es un alias para --delete --force , que elimina la twig "independientemente de su estado fusionado". [Fuente: man git-branch ]

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

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

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

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 twig remota o una label".

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 dictará si necesita usar la syntax más fácil o más difícil.

Eliminar Remote Branch [Respuesta original del 5-ene-2010]

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

Eliminar sucursales remotas

Supongamos que ha terminado con una twig remota: por ejemplo, usted y sus queueboradores han terminado con una característica y la han fusionado en la twig maestra de su control remoto (o en cualquier twig en la que se encuentre su línea de código estable). Puede eliminar una twig remota usando la syntax bastante obtusa git push [remotename] :[branch] . Si desea eliminar su twig de solución de server del server, ejecute lo siguiente:

 $ git push origin :serverfix To git@github.com:schacon/simplegit.git - [deleted] serverfix 

Auge. No más sucursales en tu server. Es posible que desee escuchar esta página, porque necesitará ese command, y es probable que olvide la syntax. Una forma de recordar este command es recordando la git push [remotename] [localbranch]:[remotebranch] que revisamos un poco antes. Si dejas de lado la porción [localbranch] , básicamente estás diciendo: "No tomes nada de mi lado y haz que sea [remotebranch] ".

git push origin :bugfix y funcionó maravillosamente. Scott Chacon estaba en lo cierto; querré escuchar esa página (o casi de oreja de perro respondiendo esto en Stack Overflow).

Entonces deberías ejecutar esto en otras máquinas

 git fetch --all --prune 

para propagar los cambios.

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

Para eliminar una sucursal local de su máquina:

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

Para eliminar una twig remota del server:

git push origin --delete {the_remote_branch}

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

Las respuestas cortas

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

Eliminar una twig 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 twig 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 twigs diferentes para eliminar!

Cuando se trata de eliminar sucursales local y remotamente, tenga en count que hay 3 twigs diferentes involucradas :

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

Visualización de 3 ramas

El póster original utilizado

 git branch -rd origin/bugfix 

que solo eliminó su origen local de bifurcación de rastreo remoto origin/bugfix , y no la bifurcación de bifurcación de bugfix remota en origin .

Diagrama 2

Para eliminar esa twig remota real , necesita

 git push origin --delete bugfix 

Diagrama 3

Detalles adicionales

Las siguientes secciones describen detalles adicionales a tener en count al eliminar las twigs remotas y de seguimiento remoto.

Al presionar para eliminar sucursales remotas también se eliminan las twigs de seguimiento remoto

Tenga en count que eliminar la twig remota X de la línea de command usando un git push también eliminará el origin/X twig de rastreo remoto local , por lo que no es necesario podar la twig obsoleta de seguimiento remoto con git fetch --prune or git fetch -p , aunque no estaría mal si lo hicieras de todos modos.

Puede verificar que el origin/X twig de rastreo 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 

Podando el origen de la twig de seguimiento remoto local obsoleto / X

Si no eliminó su twig remota X de la línea de command (como se indicó anteriormente), entonces su repository local aún contendrá (un ahora obsoleto) origin/X sucursal de seguimiento remoto origin/X Esto puede suceder si elimina una twig remota directamente a través de la interfaz web de GitHub, por ejemplo.

Una forma típica de eliminar estas twigs obsoletas de seguimiento remoto (desde la versión 1.6.6 de Git) es simplemente ejecutar git fetch con la --prune or --prune -p . Tenga en count que esto elimina todas las twigs de seguimiento remotas locales obsoletas para las sucursales remotas que ya no existen 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 (el énfasis es mío):

"git fetch" aprendió --multiple y --multiple opciones, para ejecutar fetch desde muchos repositorys, y --prune option para eliminar las twigs de rastreo remotas que quedaron obsoletas. Esto hace que "actualización remota git" y "transferencia remota remota git" sean less necesarias (sin embargo, no hay un plan para eliminar "actualización remota" ni "transferencia remota").

Poda automática alternativa a la anterior para twigs obsoletas de seguimiento remoto

De forma alternativa, en lugar de eliminar las twigs de seguimiento remotas locales obsoletas a través de git fetch -p , puede evitar realizar la operación de networking adicional simplemente eliminando manualmente la (s) twig (s) con las banderas --remote o -r :

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

Ver también

  • git-branch (1) Página manual .
  • git-fetch (1) Página manual .
  • Pro Git § 3.5 Git Branching – Sucursales remotas .

También puede usar lo siguiente para eliminar la twig remota.

 git push --delete origin serverfix 

Que hace lo mismo que

 git push origin :serverfix 

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

Pasos para eliminar una twig:

para eliminar la twig remota:

 git push origin --delete <your_branch> 

para eliminar la sucursal local:

 git branch -D <branch_name> 

Explica: OK, solo explica lo que está pasando!

Simplemente haga que git push origin --delete para eliminar su twig remota, agregue el nombre de la twig al final y esto lo eliminará y lo empujará al control remoto al mismo time …

Además, git branch -D , que simplemente elimina la twig local Only ! …

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

También creo la image a continuación para mostrar los pasos:

eliminar una rama en git

Si desea eliminar una twig, primero realice el pago en la sucursal que no sea la sucursal que se eliminará.

 git checkout other_than_branch_to_be_deleted 

Eliminando la twig local:

 git branch -D branch_to_be_deleted 

Eliminando la twig remota:

 git push origin --delete branch_to_be_deleted 

Sugerencia: cuando elimina twigs usando

 git branch -d <branchname> # deletes local branch 

o

 git push origin :<branchname> # deletes remote branch 

solo las references son eliminadas A pesar de que la twig realmente se elimina en el control remoto, las references a ella aún existen en los repositorys locales de los miembros de su equipo. Esto significa que para otros miembros del equipo, las twigs eliminadas aún son visibles cuando hacen una git branch -a .

Para resolver esto, los miembros de tu equipo pueden podar las twigs eliminadas con

 git remote prune <repository> 

Esto es típicamente git remote prune origin .

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

Esto es simple: simplemente ejecute el siguiente command:

Para eliminar una twig de Git tanto local como remotamente, primero borre la twig local usando el command:

 git branch -d example 

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

Y después de eso, elimine la twig remota usando el command:

 git push origin :example 

Otro enfoque es

 git push --prune origin 

ADVERTENCIA: Esto eliminará todas las sucursales remotas que no existan localmente. O más completo,

 git push --mirror 

hará que el repository remoto parezca la copy local del repository (los cabezales, controles remotos y tags locales se duplican en remoto).

Uso lo siguiente en mi configuration de Bash :

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

Entonces puedes llamar:

 git-shoot branchname 

Desde enero de 2013, GitHub incluye un button Eliminar twig junto a cada twig en la página "Sucursales".

Publicación de blog relevante: crear y eliminar sucursales

Si desea completar estos dos pasos con un solo command, puede crear un alias 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 configuration global desde la línea de command usando

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

NOTA : si usa -d (d minúscula), la twig solo se eliminará si se ha fusionado. Para forzar que ocurra la eliminación, necesitará usar -D (D en mayúscula).

Eliminar localmente:

Para eliminar una sucursal local, puede usar:

 git branch -d branch_name 

Para eliminar una twig a 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 

Sugeriría que uses la 2da vía ya que es más intuitiva.

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

 $ git remote prune origin Pruning origin URL: git@example.com/yourrepo.git * [pruned] origin/some-branchs 

Se poda y elimina twigs de seguimiento remoto de una list git branch -r .

Para eliminar su sucursal de forma local y remota

  • Checkout para master branch

    git checkout master

  • Eliminar su twig remota

git push origin --delete <branch-name>

  • Eliminar su sucursal local

git branch --delete <branch-name>

Además de las otras respuestas, a menudo uso la herramienta git_remote_branch . Es una installation adicional, pero te proporciona una forma conveniente de interactuar con sucursales remotas. En este caso, para eliminar:

 grb delete branch 

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

Eliminando twigs

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

 $ git branch -d contact-form 

Y para eliminar la twig remota:

 git push origin --delete contact-form 

Eliminar la twig remota

git push origin :<branchname>

Eliminar una sucursal local

git branch -D <branchname>

Eliminar pasos de sucursal local:

  1. pago a otra sucursal
  2. eliminar la sucursal local

Un command de línea borra tanto local como remoto :

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

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

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

Simplemente di:

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

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 twig
  2. Cambie a la twig que desea eliminar rama de conmutación
  3. En el menu "Sucursal", select "Cancelar publicación …" para eliminar la sucursal de los serveres de GitHub. rama no publicada
  4. En el menu "Sucursal", select, "Eliminar" nombre de la twig "…", para eliminar la twig de su máquina local (también conocida como la máquina en la que está trabajando actualmente) eliminar la sucursal local
 git push origin --delete branchName 

es más fácil de recordar que

 git push origin :branchName 

Esto no funcionará si tiene una label con el mismo nombre que la twig 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 'git@github.com:SomeName/some-repo.git' 

En ese caso, debe especificar que desea eliminar la twig, no la label:

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

Del mismo modo, para eliminar la label en lugar de la twig que usaría:

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

Para eliminar Localmente – (Normal),

 git branch -d my_branch 

Si su twig en el progreso de rebase / fusión y eso no se hizo correctamente significa que obtendrá un error Rebase/Merge in progress por lo que en ese caso, no podrá eliminar su twig.

Entonces, o necesitas resolver el rebasado / fusión, de lo contrario puedes forzar Eliminar usando,

 git branch -D my_branch 

Para eliminar 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,

enter image description here

Muchas de las otras respuestas darán lugar a errores / advertencias. Este enfoque es relativamente some_other_branch , aunque es posible que aún necesites la git branch -D branch_to_delete si no está completamente fusionada con some_other_branch , por ejemplo.

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

La poda remota no es necesaria si eliminó la twig remota. Solo se usa para get los controles remotos más actualizados disponibles en un repository que está rastreando. 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 commands para ver las sucursales remotas más actualizadas

 git fetch git remote prune origin git branch -r 

Me cansé de search en Google esta respuesta, así que tomé un enfoque similar a la respuesta que crizCraig publicó 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 twig (fusionada en master , por ejemplo) ejecuto lo siguiente en mi terminal:

 gitdelete my-branch-name 

… que luego elimina my-branch-name del origin , así como también localmente.

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

Llame a este file git-remove , hágalo ejecutable y póngalo en su path. Luego use, 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 
 git push origin :bugfix # Deletes remote branch git branch -d bugfix # Must delete local branch manually 

Si está seguro de querer eliminarlo, ejecute

 git branch -D bugfix 

Ahora para limpiar las sucursales remotas eliminadas

 git remote prune origin 

Antes de ejecutar

 git branch --delete <branch> 

asegúrese de determinar primero cuál es el nombre EXACTO de la sucursal remota al ejecutar:

 git ls-remote 

Esto le dirá qué debe ingresar EXACTAMENTE para el valor de <branch> . (la branch es sensible a mayúsculas y minúsculas)