38 Pregunta: ¿Cómo elimino una sucursal de Git de forma local y remota?

pregunta creada en Sat, Jun 15, 2019 12:00 AM

Quiero eliminar una rama local y remotamente.

Intentos fallidos de eliminar una 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 la  ¿La sucursal remotes/origin/bugfix es local y remota?

    
15386
  1. Nota del moderador: Si desea responder a esta pregunta, tenga en cuenta que ya hay 40 respuestas publicadas. ¿Su nueva respuesta agregará algún valor sustancial?
    2014-06-11 16: 10: 42Z
  2. Nota: para Git 2.5+ (Q2 2015), el mensaje exacto será " deleted remote-tracking branch ": consulte github /git /las partes del equipo
    2015-05-25 14: 57: 35Z
  3. Dios mío, solo quiero saber cuántos puntos recibió el OP por esta pregunta?
    2019-06-13 19: 19: 53Z
  4. 30 Respuestas                              30                         

    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]

    Eliminar rama remota [Actualizado el 8 de septiembre de 2017]

    A partir de Git v1.7.0 , puedes eliminar una rama 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 rama remota o una etiqueta".

    Comenzando en Git v2.8.0 También puede usar git push con la opción -d como un 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 de 5 de enero de 2010]

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

      

    Eliminar sucursales remotas

         

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

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

    Boom. 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 sintaxis del git push [remotename] [localbranch]:[remotebranch] que analizamos un poco antes. Si deja de lado la parte [localbranch], básicamente está diciendo: "No tome nada de mi parte y haga que sea [remotebranch]".

    Emití git push origin :bugfix y funcionó muy bien. Scott Chacon tenía razón: querré oreja de perro esa página (o prácticamente oreja de perro por respondiendo esto en Stack Overflow).

    Entonces deberías ejecutar esto en otras máquinas

     
    git fetch --all --prune
    

    para propagar cambios.

        
    19267
    2018-12-13 04: 45: 54Z
    1. Si conoces la sintaxis git push origin local_branch:remote_branch, entonces la sintaxis para eliminar una rama con git push origin :remote_branch es bastante linda.Hay un vacío antes del :
      2012-05-11 04: 05: 03Z
    2. No olvide hacer un git fetch --all --prune en otras máquinas después de eliminar la rama remota en el servidor. ||| Después de eliminar la sucursal local con git branch -d y eliminar la sucursal remota con git push origin --delete, otras máquinas pueden tener "sucursales de seguimiento obsoletas" (para verlas, haga git branch -a). Para deshacerse de estos hacer git fetch --all --prune.
      2015-05-27 16: 51: 36Z
    3. además de @ TrevorBoydSmith's git branch -a para ver todas las sucursales, también puede usar git branch -r para ver solo sucursales remotas. vea también git remote show origin - fuente: gitready.com/intermediate/2009/02/13 /list-remote-branches.html
      2015-09-09 09: 53: 18Z
    4. Tuve que ejecutar git branch -D Branch_Name para deshacerme de la sucursal local
      2016-03-10 01: 32: 06Z
    5. @ KolobCanyon Solo tiene que usar -D si la rama no se ha fusionado en otra rama.
      2016-04-05 16: 27: 15Z

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

    Para eliminar una rama local de su máquina:

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

    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

        
    3040
    2017-12-18 12: 33: 13Z
    1. @ megido, bien -D eliminaciones forzadas, -d te da una advertencia si aún no está fusionada.
      2014-11-06 19: 04: 59Z
    2. Si su sucursal local no se fusiona con la maestra y se ejecutó 'git branch -d your_branch, se producirá un error como error: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
      2015-10-31 12: 59: 14Z
    3. Sugeriría usar -d en lugar de -D porque es más seguro. Si -d falla debido a confirmaciones no combinadas, entonces debe evaluar eso y, si está definitivamente bien, eliminar y luego usar -D.
      2016-02-02 03: 47: 57Z
    4. Las personas con clones de repositorio donde se han eliminado las sucursales remotas deben ejecutar git remote prune <name> (p. ej., git remote prune origin) para eliminar localmente las ramas obsoletas que ya no existen en el control remoto.
      2016-04-18 23: 07: 39Z
    5. Me gustaría agregar que -d muestra una advertencia si no está fusionada con la HEAD actual. Si necesita claridad, recomiendo este comando git branch -a --merged origin/master. Enumera las sucursales, tanto locales como remotas; que se han fusionado en maestro. Información adicional aquí
      2017-02-10 13: 10: 57Z

    Las respuestas cortas

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

    Eliminando 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
    

    Eliminando una rama 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 estás tratando de borrar ramas boLocal y remotamente, tenga en cuenta que hay 3 sucursales diferentes involucradas :

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

    Visualización de 3 sucursales

    El cartel original utilizado

     
    git branch -rd origin/bugfix
    

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

    Diagrama 2

    Para eliminar esa rama remota real , necesitas

     
    git push origin --delete bugfix
    

    Diagrama 3

    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 presionar para eliminar sucursales remotas, también se eliminan las sucursales de seguimiento remoto

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

    Puede verificar que la rama de seguimiento remoto origin/X 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
    

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

    Si no eliminó su sucursal remota X de la línea de comando (como arriba), entonces su repositorio local todavía contendrá (una rama ya obsoleta) de seguimiento remoto origin/X. 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 el --prune o un -p más corto. 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 la 1.6.6 notas de publicación (énfasis mío):

      

    "git fetch" aprendido --all y --multiple opciones, para ejecutar fetch desde   muchos repositorios y la opción --prune para eliminar el seguimiento remoto   ramas que quedaron obsoletas. Estas crean "git remote update" y "git   poda remota "menos necesaria (no hay ningún plan para eliminar" el control remoto)   actualización "ni" poda remota ", sin embargo).

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

    Alternativamente, en lugar de podar sus sucursales obsoletas de seguimiento remoto local a través de git fetch -p, puede evitar que la red funcione mejor simplemente eliminando manualmente las sucursales con los indicadores --remote o -r:  

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

    Ver también

    1760
    2016-03-10 12: 20: 26Z
    1. En su ilustración, puedo ver que hay un repositorio de clon local y un repositorio de origen remoto. Así que hay al menos dos ramas físicas. ¿Dónde está la tercera rama para eliminar? ¿Es la tercera rama solo un puntero que apunta a una confirmación en el repositorio de clonación local?
      2016-02-18 02: 00: 40Z
    2. @ huggie eso es bastante correcto. Las sucursales en Git son solo marcadores adjuntos a los compromisos. Así que en mis gráficos anteriores, hay X y origin/X marcadores en el clon local (2 ramas), y luego hay X en el control remoto (haciendo 3 ramas).
      2016-02-23 07: 33: 42Z
    3. + 1 para la rama de seguimiento remoto. Esta rama es la que causa problemas cuando clonas la rama de otra persona. Sigue el seguimiento de sus compromisos y le pregunta si desea ingresar a la sucursal de esa persona.
      2017-06-21 19: 48: 20Z

    Pasos para eliminar una rama:

    Para eliminar la rama remota:

     
    git push origin --delete <your_branch> 
    

    Para eliminar la sucursal local , tiene 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, esto se eliminará y lo enviará al control remoto al mismo tiempo ...

    También, git branch -D, que simplemente elimina la rama local SOLAMENTE ! ...

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

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

     eliminar una sucursal remota y local en git

        
    1321
    2019-03-22 07: 08: 35Z
    1. git branch -a mostrará sucursales locales y remotas. Le ayudará a introducir el diagrama.
      2017-07-27 03: 01: 39Z
    2. tenga en cuenta que si está configurando en la rama que desea eliminar, debe verificar una rama que no sea la que necesita eliminar (p. ej .: maestro) antes de eliminar la sucursal local.
      2018-05-28 08: 43: 55Z
    3. Cuando las sucursales se eliminan en el origen, su repositorio local no lo notará. Seguirá teniendo sus versiones localmente en caché de esas sucursales (lo que es realmente bueno) pero git branch -a todavía las listará como sucursales remotas. Puede limpiar esa información localmente de esta manera: git remote prune origin Sus copias locales de sucursales eliminadas no se eliminan por esto. El mismo efecto se logra usando git fetch --prune
      2019-05-08 06: 33: 45Z

    También puedes usar 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.

        
    753
    2018-12-13 04: 44: 17Z
    1. ... y más seguro de usar: O
      2017-11-29 07: 31: 21Z
    2. Olvidaste la parte sobre la eliminación de la rama local, que se puede hacer mediante: git branch -d <local_branch> o git branch -D <local_branch> para la eliminación forzada
      2018-02-14 04: 23: 55Z

    Sugerencia: cuando elimines ramas utilizando

     
    git branch -d <branchname> # deletes local branch
    

    o

     
    git push origin :<branchname> # deletes remote branch
    

    solo se eliminan las referencias. A pesar de que la rama se elimina realmente en el control remoto, las referencias a ella aún 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 un 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.

        
    360
    2018-12-13 04: 44: 30Z
    1. Debe aclarar que la operación git push anterior elimina la rama local y la rama remota.
      2013-05-21 13: 51: 46Z
    2. Tenga en cuenta que git remote prune es una forma un tanto obsoleta de eliminar ramas obsoletas de seguimiento remoto, la forma más nueva de hacerlo es usar git fetch --prune o git fetch -p.
      2014-06-11 16: 30: 04Z
    3. @ RRMadhav, de hecho, no verá la rama eliminada después de eliminarla, ya que la referencia a la rama remota se eliminará de forma local. Cualquier otra persona en su equipo que haya verificado esa rama seguirá teniendo esa referencia y Todavía lo veo a menos que se poden la rama.
      2014-12-05 14: 27: 38Z

    Si desea eliminar una rama, primero haga el checkout a la rama que no sea la rama que desea eliminar.

     
    git checkout other_than_branch_to_be_deleted
    

    Eliminando la rama local:

     
    git branch -D branch_to_be_deleted
    

    Eliminando la rama remota:

     
    git push origin --delete branch_to_be_deleted
    
        
    359
    2015-06-09 02: 04: 02Z
     
    git branch -D <name-of-branch>
    git branch -D -r origin/<name-of-branch>
    git push origin :<name-of-branch>
    
        
    259
    2014-08-08 20: 04: 03Z
    1. Tenga en cuenta que -D fuerza la eliminación. Siempre es mejor usar -d, que le recordará si necesita hacer algo peligroso.
      2015-01-10 01: 08: 57Z
    2. ahahah :) depende de ti: usa -d si quieres ver a Git llorando o -D si quieres llorar.
      2015-02-13 11: 21: 07Z

    Esto es simple: simplemente ejecuta 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í example es el nombre de la rama)

    Y luego borre la rama remota usando el comando:

     
    git push origin :example
    
        
    221
    2015-06-09 02: 03: 14Z

    Otro enfoque es: -

     
    git push --prune origin
    

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

     
    git push --mirror
    

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

        
    192
    2018-12-13 04: 44: 03Z
    1. git push --prune origin no hizo nada por mí en gitlab: git clone git: //repo.git; rama git -d -r origen /algunas-ramas; git push --prune origin; Rendimientos: Todo al día; ir a buscar git; trae ramas localmente eliminadas; git push --mirror; ¡Ahora realmente se han ido!
      2015-10-08 16: 46: 25Z

    Uso lo siguiente en mi Bash :

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

    Entonces puedes llamar:

     
    git-shoot branchname
    
        
    163
    2018-12-13 04: 43: 53Z
    1. Acabé de agregar el alias "shoot" en mi .gitconfig shoot = push origin --delete
      2014-12-04 18: 06: 37Z
    2. Si su origen es un Stash de Atlassian y la rama se establece como predeterminada, aparecerá un error "De forma predeterminada, se elimina la eliminación de la rama actual ..." . Tuve que cambiar la rama predeterminada en Stash para que apunte a otra rama antes de poder eliminarla.
      2014-12-12 00: 29: 35Z
    3. Esto es perfectamente simple como lo has hecho, pero fyi git también te permite crear comandos personalizados. Poner git push origin --delete $1 en un archivo en tu ruta llamado git-shoot y git shoot branchname también funcionará.
      2015-10-14 07: 09: 31Z

    Desde enero de 2013, GitHub incluyó un botón Eliminar rama al lado de cada rama en tu página de "Ramas".

    Publicación de blog relevante: Crear y eliminar sucursales

        
    128
    2018-12-13 04: 42: 21Z
    1. Este año solo comencé a usar Github, así que me preguntaba por qué esta era una pregunta tan altamente calificada y por qué ninguna de las mejores respuestas sugirió que simplemente se elimine. La interfaz web de Github! Es interesante que solo sea una adición reciente.
      2013-09-11 12: 18: 54Z
    2. Iba a señalar esto. Tenga en cuenta que el botón no eliminará su sucursal local ... vea esta respuesta para saber cómo hacerlo: stackoverflow.com/a/10999165 /901641
      2013-10-29 14: 02: 45Z

    Eliminar localmente:

    Para eliminar una rama local, puede usar:

     
    git branch -d <branch_name> 
    

    Para eliminar una rama por la fuerza, use -D en 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 sugeriría que utilice la segunda forma, ya que es más intuitivo.

        
    123
    2018-12-13 04: 45: 05Z

    Si desea completar estos dos pasos con un solo comando, puede crear un alias para él 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 comandos 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 (en mayúscula D).

        
    121
    2014-06-11 16: 26: 17Z
    1. Esto es lo que estaba buscando. Mi propio alias de función de shell no funcionó (EOF inesperado) y no pude averiguar por qué, ¡pero esto funciona muy bien! El único cambio que hice fue reemplazar el && con el ;, de modo que incluso si falla el primer comando, el segundo se ejecutará (a veces solo existe lo local o lo remoto).
      2014-12-16 08: 55: 29Z

    Para eliminar su sucursal de forma local y remota

    • Checkout to master branch - git checkout master

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

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

    113
    2017-12-13 22: 10: 51Z

    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 las ramas de seguimiento remoto de una lista git branch -r.

        
    108
    2018-12-13 04: 43: 19Z

    Además de las otras respuestas, a menudo utilizo 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
    

    Encuentro que también uso los comandos publish y track con bastante frecuencia

        
    104
    2018-12-13 04: 41: 10Z

    One liner comando eliminar 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"
    
        
    93
    2017-01-15 08: 30: 43Z
    1. ⚠️ Use git branch -D con cuidado en un script, ya que elimina forzadamente una rama sin verificar que se haya fusionado. Use -d para estar seguro.
      2017-03-13 14: 05: 07Z

    Eliminación de sucursales

      

    Supongamos 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 eliminar la rama remota:

     
    git push origin --delete contact-form
    
        
    91
    2015-11-18 19: 51: 13Z

    Eliminar rama remota

    git push origin :<branchname>

    Eliminar rama local

    git branch -D <branchname>

    Eliminar los pasos de la rama local:

    1. pago y envío a otra sucursal
    2. eliminar rama local
    86
    2016-02-19 18: 05: 46Z
    1. ¿La eliminación remota de sucursales requiere "git push" después?
      2016-02-17 08: 32: 54Z
    2. @ SamithaChathuranga no, git push origin :<branchname> ya empuja una rama 'vacía' al remoto (por lo tanto, elimina la rama remota)
      2017-06-09 22: 20: 55Z

    Simplemente diga:

     
    git branch -d <branch-name>
    git push origin :<branch-name>
    
        
    85
    2016-06-25 12: 52: 01Z
    1. Esto funciona si es su propia rama. Pero si está podando todas las ramas innecesarias en el repositorio (algunas de las cuales no son suyas) no sería suficiente
      2016-06-30 22: 23: 07Z
     
    git push origin --delete <branch Name>
    

    es más fácil de recordar que

     
    git push origin :branchName
    
        
    80
    2018-12-13 04: 44: 45Z

    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  cambio de rama
    3. En el menú "Sucursal", selecciona "Anular publicación ..." para tener el salvado.Ch eliminado de los servidores de GitHub. rama no publicada
    4. En el menú "Sucursal", selecciona 'Eliminar " nombre_de_semisión " ...', para eliminar la sucursal de tu máquina local (también conocida como la máquina en la que estás trabajando actualmente) eliminar la rama local
    79
    2016-12-16 03: 58: 50Z
    1. No bajé la votación, pero creo que no está ayudando de manera sustancial. La pregunta es, obviamente, pedir una respuesta de tipo de línea de comandos más sin tener que usar un programa externo, si la gente hace clic aquí, probablemente no buscarán un github para las formas de escritorio.
      2015-11-06 11: 51: 15Z
    2. @ Daemedeor, no estoy de acuerdo. En 2010, cuando el OP hizo la pregunta, no existía la forma de hacerlo de la IU y la única opción era la línea de comandos. Para indicar que desea una opción de línea de comando únicamente, debe indicarse en la pregunta o con la etiqueta, command-line- interfaz , que en este caso no está presente.
      2015-11-06 16: 00: 39Z
    3. El comando git para eliminar una rama remota apesta y tiendo a olvidarlo (tanto nuevo como antiguo). Afortunadamente hay herramientas GUI que tienen la opción. Git Gui, TortoiseGit y GitHub Desktop lo tienen; me gustaría que Git Extensions también tuviera esta funcionalidad. De todos modos, lo que recuerdo es iniciar Git Gui desde Git Extensions cuando necesito eliminar una sucursal remota.
      2016-03-25 21: 59: 21Z

    Para eliminar localmente - (Normal),

     
    git branch -d my_branch
    

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

    Por lo tanto, ya sea su necesidad de resolver la reorganización /fusión o, de lo contrario, puede forzar la eliminación 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 gráfica,

     introduce la descripción de la imagen aquí

        
    73
    2017-11-19 10: 24: 03Z

    Esto no funcionará si tienes 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 'git@github.com: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
    
        
    65
    2018-12-13 04: 43: 05Z
    1. Esto está bien, pero la gente realmente no debería nombrar sus ramas y etiquetas con el mismo nombre y el mismo esquema de nombres en primer lugar.
      2014-07-29 10: 00: 02Z
    2. Bueno, mi escenario era que estaba convirtiendo una rama en una etiqueta y tenía sentido que la etiqueta tuviera el mismo nombre que la rama. Al convertir me refiero a fusionar la rama B con la A y etiquetar el último commit en la rama B con la etiqueta B para que después de eliminar la rama B aún se pueda restaurar fácilmente simplemente marcando la etiqueta B.
      2014-07-30 11: 59: 10Z

    Muchas de las otras respuestas darán lugar a errores /advertencias. Esta apProach es relativamente infalible, aunque es posible que necesite git branch -D branch_to_delete si no está completamente integrado 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 eliminó la rama remota. Solo se utiliza para obtener los controles remotos más actualizados disponibles en un repositorio que está rastreando. He observado que git fetch agregará controles remotos, no los eliminará. Aquí hay un ejemplo de cuándo git remote prune origin realmente hará algo:

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

     
    git fetch
    git remote prune origin
    git branch -r
    
        
    51
    2018-12-13 04: 41: 37Z

    Me cansé de buscar en Google para esta respuesta, así que adopté 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 rama (fusionada en master, por ejemplo) ejecuto lo siguiente en mi terminal:

     
    gitdelete my-branch-name
    

    ... que luego elimina my-branch-name de origin como localmente.

        
    49
    2017-05-23 12: 34: 58Z
    1. expandiendo esto, --delete "$@" y -D "$@" en lugar de $1 lo manejarán para múltiples sucursales.
      2016-06-27 13: 15: 19Z
    2. Sugiero que ejecute git branch -d (con minúscula 'd') primero para asegurarse de que los cambios se hayan fusionado, y luego presione si tiene éxito (ponga && entre los comandos)
      2016-07-19 14: 17: 45Z

    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 <branch>. (branch distingue entre mayúsculas y minúsculas)

        
    45
    2016-06-25 12: 56: 09Z
     
    git push origin :bugfix  # Deletes remote branch
    git branch -d bugfix     # Must delete local branch manually
    

    Si está seguro de que desea eliminarlo, ejecute

     
    git branch -D bugfix
    

    Ahora para limpiar la ejecución de las sucursales remotas eliminadas

     
    git remote prune origin
    
        
    44
    2016-04-21 16: 49: 36Z

    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 colóquelo en su ruta. 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
    
        
    43
    2018-12-13 04: 42: 35Z
    1. con una letra, obtenga cortesía de esta respuesta: stackoverflow.com/a/8072675/8047
      2013-11-19 21: 04: 12Z
    2. @ chhh, entonces necesita extender esta funcionalidad para hacer de esta una variable en lugar de una suposición.
      2014-12-05 16: 44: 44Z
    3. lo siento, pero instala Ruby para ese tipo de trabajo? Más lógico es la implementación en bash, que funcionará fuera de la caja.
      2015-05-21 19: 37: 04Z
    4. @ Reishin Ruby está instalado en la caja como Bash, al menos en OSX. Consulte: stackoverflow.com/questions/2342894/… , donde este tema se ha descartado como opbasado en inion por SO.
      2015-05-21 20: 03: 07Z
    5. @ Sí, este enlace está fuera del contexto y tiene un alcance más amplio. Solo cuento sobre git y como el tema no se originó solo para OSX, la elección es extraña para otros sistemas (por ejemplo, * UNIX, Windows)
      2015-05-21 20: 33: 30Z
fuente colocada aquí