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


Quiero eliminar una rama localmente y en mi proyecto remoto 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 manera diferente para eliminar con éxito el remotes/origin/bugfix rama localmente y en GitHub?


13818
2018-01-05 01:12


origen


Respuestas:


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 la sucursal local

Para eliminar el local rama utiliza uno de los siguientes:

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

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

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

A partir de Git v1.7.0, puedes eliminar un remoto rama 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 fue agregado en Git v1.5.0 "para eliminar una rama remota o una etiqueta".

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

Por lo tanto, la versión de Git que haya instalado dictará si necesita usar la sintaxis 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 rama remota: por ejemplo, usted y sus colaboradores han terminado con una característica y la han fusionado en la rama maestra de su control remoto (o en cualquier rama en la que se encuentre su 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 solución de servidor del servidor, ejecute lo siguiente:

$ git push origin :serverfix
To git@github.com: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 es probable que se olvide de la sintaxis. Una forma de recordar este comando es recordando el git push [remotename] [localbranch]:[remotebranch] sintaxis que revisamos un poco antes. Si dejas el [localbranch] porción, entonces básicamente estás diciendo, "No tomes nada de mi lado y haz que sea [remotebranch]"

Yo emití git push origin :bugfix y funcionó maravillosamente. Scott Chacon tenía razón, querré oreja de perro esa página (o prácticamente 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.


17189
2018-01-05 01:13



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

Para eliminar un sucursal local de su máquina:

git branch -d {the_local_branch} (utilizar -D en su lugar, forzar a eliminar la rama sin verificar el estado fusionado)

Para eliminar un rama remota del servidor:

git push origin --delete {the_remote_branch}

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


2867
2018-06-12 14:51



Las respuestas cortas

Si desea explicaciones más detalladas de los siguientes comandos, vea 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 local y remotamente, tenga en cuenta que hay 3 ramas diferentes involucradas:

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

Visualization of 3 branches

El póster original utilizado

git branch -rd origin/bugfix

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

Diagram 2

Para eliminar esa rama remota real, necesitas

git push origin --delete bugfix

Diagram 3

Detalles adicionales

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

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

Tenga en cuenta que eliminar la rama remota X desde la línea de comando usando un git push  también eliminará la rama local de seguimiento remoto  origin/X, por lo que no es necesario podar la rama obsoleta de seguimiento remoto con git fetch --prune o git fetch -p, aunque no estaría mal 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

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

Si no eliminaste tu rama remota X desde la línea de comandos (como arriba), su repositorio local aún contendrá (una ahora obsoleta) rama de seguimiento remoto origin/X. Esto puede suceder si elimina una rama remota directamente a través de la interfaz web de GitHub, por ejemplo.

Una forma típica de eliminar estas ramas obsoletas de seguimiento remoto (desde la versión 1.6.6 de Git) es simplemente ejecutar git fetch con el --prune o más corto -p. Tenga en cuenta que esto elimina todas las ramas locales obsoletas de seguimiento remoto 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 la 1.6.6 notas de la versión (énfasis mío):

"git fetch" aprendido  --all y --multipleopciones, para ejecutar fetch desde   muchos repositorios, y --prune opción para eliminar el seguimiento remoto   ramas que se volvieron obsoletas  Estos hacen "actualización remota git" y "git"   podar a distancia "menos necesario (no hay un plan para eliminar")   actualizar "ni" podar remota ", sin embargo).

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

Alternativamente, en lugar de eliminar las ramas de seguimiento remotas locales obsoletas a través de git fetch -p, puedes evitar hacer la operación adicional de la red simplemente retirando manualmente la (s) rama (s) con --remote o -r banderas

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

Ver también


1640
2018-05-30 18:32



Pasos para eliminar una rama:

para eliminar el rama remota:

git push origin --delete <your_branch> 

para eliminar el 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 explica lo que está pasando aquí!

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

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

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

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

delete a remote and local branch in git


922
2018-06-27 13:13



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

git push --delete origin serverfix

Que hace lo mismo que

git push origin :serverfix

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


703
2017-10-27 22:22



Si desea eliminar una rama, 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 rama local:

git branch -D branch_to_be_deleted

Eliminando la rama remota:

git push origin --delete branch_to_be_deleted

344
2017-10-07 13:52



Sugerencia: cuando elimina ramas usando

git branch -d <branchname>    # deletes local branch

o

git push origin :<branchname> # deletes remote branch

solo las referencias son eliminadas A pesar de que la rama realmente se elimina 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 tu equipo pueden podar las ramas eliminadas con

git remote prune <repository>

Esto es típicamente git remote prune origin.


329
2017-11-07 13:02



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

247
2017-10-24 17:36



Esto es simple: simplemente ejecute el siguiente comando:

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

git branch -d example

(aquí example es el nombre de la sucursal)

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

git push origin :example

212
2018-02-15 15:20