Pregunta

Quiero eliminar una sucursal tanto de forma local como remota.

Intentos fallidos de 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 manera diferente para eliminar exitosamente elremotes/origin/bugfix sucursal tanto local como remotamente?

¿Fue útil?

Solución

Resumen

$ 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 rama local

Para eliminar el locales rama de un solo uso de los siguientes:

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

Nota: La opción -d es un alias para --delete, que sólo elimina la rama si ya ha sido totalmente fusionado en su rama ascendente. También es posible usar -D, que es un alias para --delete --force, lo que elimina la rama "con independencia de su condición resultante de la fusión." [Fuente: man git-branch]

Eliminar Branch remoto [actualizado el 8-Sep-2017]

A partir de Git v1.7.0 , puede eliminar una a distancia rama utilizando

$ 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 añadió en Git v1.5.0 "para borrar una rama remota o una etiqueta."

A partir del Git V2.8.0 también se puede usar con la opción git push -d como un alias para --delete.

Por lo tanto, la versión de Git ha instalado determinará si es necesario utilizar la sintaxis fácil o más difícil.

Eliminar Branch remoto [Respuesta original del 5-Ene-2010]

Desde el capítulo 3 de Pro Git por Scott Chacon:

  

Eliminación de las sucursales remotas

     

Supongamos que haya terminado con una rama a distancia - por ejemplo, usted y sus colaboradores terminado con una característica y se han fusionado en la rama principal de su mando a distancia (o cualquier rama de su código de línea estable está en). Puede eliminar una rama remota utilizando la sintaxis git push [remotename] :[branch] en lugar obtuso. Si desea eliminar su rama servidor-fix desde el servidor, se ejecuta el siguiente:

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

Boom. No más rama en su servidor. Es posible que desee oreja de perro esta página, dado que tiene ese comando, y es probable que se olvide de la sintaxis. Una manera de recordar este comando es recordando la sintaxis git push [remotename] [localbranch]:[remotebranch] que nos fuimos un poco más temprano. Si deja fuera de la parte [localbranch], a continuación, que está básicamente diciendo: “No lleven nada de mi lado y hacer que se [remotebranch].”

emití git push origin :bugfix y funcionó muy bien. Scott Chacón tenía razón, me va a querer a oreja de perro esa página (o virtualmente oreja de perro por Para responder a esta desbordamiento de pila).

A continuación, debe ejecutar este en otras máquinas

git fetch --all --prune

para propagar los cambios.

Otros consejos

La respuesta de Mateo. es genial para eliminar remoto sucursales y también agradezco la explicación, pero para hacer una distinción simple entre los dos comandos:

Para eliminar un sucursal local desde tu máquina:

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

Para eliminar un sucursal remota desde el servidor:

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 una explicación más detallada de los siguientes comandos, a continuación, ver las largas respuestas en la siguiente sección.

Eliminación de 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

Eliminación de una rama local:

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

Eliminación de una rama de seguimiento remoto local:

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 usted está tratando con la eliminación de las ramas tanto local como remotamente, tenga en cuenta que hay 3 ramas diferentes implicados

  1. El X sucursal local.
  2. El control remoto X rama de origen.
  3. El local de origin/X rama remota de rastreo que rastrea el X rama remota.

Visualización de 3 ramas

El cartel original utilizado

git branch -rd origin/bugfix

que sólo elimina su local de la rama remota de seguimiento origin/bugfix, y no el bugfix rama remota real en origin.

Diagrama 2

Para eliminar esa rama remota real , es necesario

git push origin --delete bugfix

Diagrama 3

Detalles adicionales

Las siguientes secciones describen detalles adicionales a considerar cuando se eliminan sus sucursales remotas y remota de seguimiento.

Empujar para eliminar ramas remotas, también se eliminan las ramas de seguimiento remoto

Tenga en cuenta que la supresión de la X rama remota desde la línea de comandos usando un git push también eliminará la rama de seguimiento remoto local origin/X, por lo que no es necesario podar la rama de seguimiento remoto obsoleta con git fetch --prune o git fetch -p, aunque no estaría de más si lo hizo de todos modos.

Puede verificar que éste también se eliminó origin/X rama de seguimiento remoto ejecutando el 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

La poda de las obsoletas origen de la rama de seguimiento a distancia / X

locales

Si no elimina su X rama remota desde la línea de comandos (como el anterior), entonces tu repositorio local todavía contener (a ahora obsoleto) de seguimiento remoto origin/X rama. Esto puede ocurrir si ha borrado una rama remota directamente a través de la interfaz web de GitHub, por ejemplo.

Una forma típica de eliminar estas ramas de seguimiento remoto obsoletos (Git desde la versión 1.6.6) es simplemente ejecutar git fetch con el --prune o -p más corto. Tenga en cuenta que esto elimina todas las ramas de seguimiento remoto local obsoletos de las sucursales remotas que ya no existen en el control remoto

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

Esta es la cita relevante de la 1.6.6 notas de (énfasis mío):

  

"git fetch" --alloptions --multiple y aprendido, a buscarlo a correr   muchos depósitos, y la opción de --prune para eliminar seguimiento remoto   ramas que fueron rancio. Estos hacen "actualización remota git" y "git   ciruela remota "menos necesario (no hay un plan para eliminar" a distancia   actualizar" ni "ciruela remota", sin embargo).

Alternativa a por encima de poda automática para ramas de seguimiento remotos obsoletos

Como alternativa, en lugar de la poda de sus ramas de seguimiento remoto local obsoletos a través git fetch -p, se puede evitar que el funcionamiento de la red adicional con sólo la eliminación manual de la rama (s) con las banderas --remote o -r:

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

Ver también

Pasos para la eliminación de una rama:

Para borrar el rama remota:

git push origin --delete <your_branch> 

Para borrar el rama local , que tiene tres maneras

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

Explicar: Aceptar, simplemente explicar lo que está pasando aquí

Basta con hacer git push origin --delete a eliminar su sucursal remota SOLAMENTE , agregue el nombre de la rama al final y esto va a eliminar y empujarlo a distancia al mismo tiempo. ..

Además, git branch -D, que sólo tiene que borrar la rama local de sólo ...

-D significa --delete --force lo que eliminará la rama aún no se fusionó (fuerza de eliminar), pero también se puede utilizar -d que significa --delete que arrojan un error respectivo del estado de combinación rama ...

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

 borrar una rama remota y local en Git

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

git push --delete origin serverfix

que hace lo mismo que

git push origin :serverfix

pero puede que sea más fácil de recordar.

Consejo: Cuando se elimina ramas utilizando

git branch -d <branchname> # deletes local branch

o

git push origin :<branchname> # deletes remote branch

sólo se eliminan las referencias. A pesar de que la rama se elimina realmente en el control remoto las referencias a que todavía existe en los repositorios locales de miembros de su equipo. Esto significa que para otros miembros del equipo de las ramas eliminadas son todavía visibles cuando hacen un git branch -a.

Para resolver este miembros de su equipo pueden podar las ramas eliminadas con

git remote prune <repository>

Esto es típicamente git remote prune origin.

Si desea eliminar una rama, primera caja para la rama distinta de la rama que desea eliminar.

git checkout other_than_branch_to_be_deleted

Eliminación de la sección local:

git branch -D branch_to_be_deleted

Eliminación de la rama remota:

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

Esto es sencillo: Simplemente ejecute el comando siguiente:

Para eliminar una rama Git tanto local como remotamente, primero elimine la sección local con el comando:

git branch -d example

(aquí example es el nombre de la sucursal)

Y después de eso eliminar ramas utilizando el comando a distancia:

git push origin :example

Otro enfoque es: -

git push --prune origin

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

git push --mirror

será efectivamente hacer que el repositorio remoto se parece a la copia local del repositorio (jefes locales, remotos y las etiquetas se reflejan en el control remoto).

Yo uso el siguiente en mi Bash :

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

A continuación, puede llamar a:

git-shoot branchname

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

Relevante entrada de blog: Crear y eliminar ramas

Eliminar localmente:

Para eliminar una sección local, puede utilizar:

git branch -d <branch_name> 

Para eliminar una rama de la fuerza, en lugar de utilizar -D -d.

git branch -D <branch_name>

Eliminar de forma remota:

Hay dos opciones:

git push origin :branchname  

git push origin --delete branchname 

Yo sugeriría utiliza la segunda forma que es más intuitivo.

Si desea completar estas dos etapas con un solo comando, puede crear un alias para ello añadiendo el siguiente a su ~/.gitconfig:

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

Como alternativa, se puede añadir a su configuración global de la línea de comandos utilizando

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

Nota: : Si se utiliza -d (d minúscula), sólo se elimina la rama si se ha fusionado. Para forzar la eliminación suceda, tendrá que utilizar -D (D mayúscula).

Para eliminar tu sucursal local y remotamente

  • Pagar en la sucursal maestra - git checkout master

  • Elimina tu sucursal remota - git push origin --delete <branch-name>

  • Elimina tu sucursal local - git branch --delete <branch-name>

También puede hacerlo utilizando git remote prune origin

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

ciruelas y elimina las ramas de seguimiento a distancia de una lista git branch -r.

Además de las otras respuestas, a menudo uso la href="https://github.com/webmat/git_remote_branch" rel="noreferrer"> git_remote_branch herramienta

grb delete branch

Me parece que también utilizo el publish y comandos track muy a menudo

Un trazador de líneas comando eliminar tanto local como remota:

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"

borrado de una rama

  

Vamos a suponer que nuestro trabajo en la rama de "formulario de contacto" que se hace y ya hemos integrado en "maestro". Puesto que no lo necesitamos más, podemos borrarlo (localmente):

$ git branch -d contact-form

Y para borrar la rama remota:

git push origin --delete contact-form

Eliminar rama remota

git push origin :<branchname>

Eliminar sucursal local

git branch -D <branchname>

Eliminar pasos de sucursal local:

  1. pagar en otra sucursal
  2. eliminar sucursal local

Simplemente decir:

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

es fácil de recordar que

git push origin :branchName

Ahora puede hacerlo con la GitHub escritorio aplicación.

Después de lanzar la aplicación

  1. Haga clic en el proyecto que contiene la rama
  2. Cambiar a la rama que desea borrar conmutación rama
  3. En el menú "Rama", seleccionar "Despublicar ...", que tiene la rama borrado de los servidores de GitHub. rama despublicación
  4. En el menú "Rama", seleccionar 'Borrar ' branch_name ' ...', al haber eliminado la rama apagado de su máquina local (también conocido como la máquina que está trabajando en ese momento) < a href = "https://i.stack.imgur.com/TTuLO.png"> eliminar rama local

Para eliminar localmente - (Normal),

git branch -d my_branch

Si su rama en el cambio de base / el progreso fusión y que no se hizo correctamente significa, obtendrá un error Rebase/Merge in progress lo que en ese caso, usted no será capaz de eliminar su rama.

Así que, o su necesidad de resolver rebase / fusión de lo contrario se puede hacer mediante el uso de la fuerza en Eliminar,

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,

 introducir descripción de la imagen aquí

Esto no funcionará si tiene una etiqueta con el mismo nombre que la rama del mando a distancia:

$ 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 es necesario especificar que desea borrar la rama, no la etiqueta:

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

Del mismo modo, para eliminar el comando en lugar de la rama se debería utilizar:

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

Muchas de las otras respuestas dará lugar a errores / advertencias. Este enfoque es relativamente a prueba de tontos, aunque puede que todavía necesite git branch -D branch_to_delete si no se fusionó plenamente en some_other_branch, por ejemplo.

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

poda remoto no es necesaria si ha borrado la rama remota. Sólo se usa para obtener la mayoría hasta la fecha disponibles mandos a distancia en un repositorio que está realizando el seguimiento. He observado git fetch agregará controles remotos, no eliminarlos. Aquí está un ejemplo de cuando git remote prune origin realmente va a hacer algo:

El usuario A hace los pasos anteriores. El usuario B podría ejecutar los siguientes comandos para ver la información más sucursales remotas de la fecha

git fetch
git remote prune origin
git branch -r

Me harté de google para esta respuesta, así que tomó un enfoque similar la respuesta que crizCraig publicada anterior.

Se ha añadido el siguiente al perfil Bash:

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

A continuación, cada vez que he terminado con una rama (fusionado en master, por ejemplo) corro el siguiente en mi terminal:

gitdelete my-branch-name

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

Antes de ejecutar

git branch --delete <branch>

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

git ls-remote

Esto le dirá exactamente lo que debe introducir para el valor <branch>. (branch entre mayúsculas y minúsculas!)

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

Si está seguro de que quiere eliminar, ejecute

git branch -D bugfix

Ahora que limpiar las sucursales remotas eliminados ejecutar

git remote prune origin

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

Llamada este archivo git-remove, hacerlo ejecutable, y lo puso en su camino. A continuación, utilice, 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top