Quiero eliminar una sucursal tanto local como 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 remotes/origin/bugfix
sucursal tanto local como remotamente?
git
version-control
git-branch
git-push
git-remote
Matthew Rankin
fuente
fuente
deleted remote-tracking branch
": vea github.com/git/git/commit/…Respuestas:
Resumen Ejecutivo
Tenga en cuenta que en la mayoría de los casos el nombre remoto es
origin
. En tal caso, tendrá que usar el comando así.Eliminar sucursal local
Para eliminar la sucursal local , utilice uno de los siguientes:
Nota: La
-d
opción 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 combinado". [Fuente:man git-branch
]Eliminar sucursal remota [Actualizado el 8-sep-2017]
A partir de Git v1.7.0 , puede eliminar una rama remota usando
que podría ser más fácil de recordar que
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
la-d
opción 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 sucursal remota [Respuesta original del 5 de enero de 2010]
Del Capítulo 3 de Pro Git de Scott Chacon:
Emití
git push origin: bugfix
y funcionó muy bien. Scott Chacon tenía razón: querré escuchar esa página (o prácticamente oreja de perro respondiendo esto en Stack Overflow).Entonces deberías ejecutar esto en otras máquinas
para propagar cambios.
fuente
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 congit branch -d
y eliminar la sucursal remota congit push origin --delete
otras máquinas aún puede tener "sucursales de seguimiento obsoletas" (para verlasgit branch -a
). Para deshacerse de estos hacergit fetch --all --prune
.git branch -a
para ver todas las ramas, también puede usargit branch -r
para ver ramas remotas solamente. ver tambiéngit remote show origin
- fuente: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlgit branch -D Branch_Name
para deshacerme de la sucursal localLa 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
en su lugar para 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: Git: Eliminar una rama (local o remota)
fuente
-D
elimina forzosamente ,-d
te avisa si aún no se ha fusionado.'git branch -d your_branch
, se producirá un error comoerror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
git remote prune <name>
(por ejemplogit remote prune origin
) para eliminar localmente las ramas obsoletas que ya no existen en el remoto.git branch -a --merged origin/master
. Enumerará todas las ramas, tanto locales como remotas; que se han fusionado en maestro. Información adicional aquí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
Eliminar una sucursal local
Eliminar una rama local de seguimiento remoto
La respuesta larga : ¡hay tres ramas diferentes para eliminar!
Cuando se trata de eliminar ramas tanto local como remotamente, tenga en cuenta que hay tres ramas diferentes involucradas :
X
.X
.origin/X
que rastrea la rama remotaX
.El póster original utilizado:
Que solo eliminó su rama local de seguimiento remoto
origin/bugfix
, y no la rama remota realbugfix
enorigin
.Para eliminar esa rama remota real , necesita
Detalles adicionales
Las siguientes secciones describen detalles adicionales a tener en cuenta al eliminar sus sucursales remotas y de seguimiento remoto.
Presionar para eliminar ramas remotas también elimina las ramas de seguimiento remoto
Tenga en cuenta que al eliminar la rama remota
X
de la línea de comando utilizando agit push
también se eliminará la rama local de seguimiento remotoorigin/X
, por lo que no es necesario podar la rama obsoleta de seguimiento remoto congit fetch --prune
ogit fetch -p
. Sin embargo, no 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:Poda de la rama obsoleta local de seguimiento remoto origen / X
Si no eliminó su rama remota
X
de la línea de comando (como arriba), entonces su repositorio local todavía contendrá (una rama obsoleta) de seguimiento remotoorigin/X
. Esto puede suceder si eliminó 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--prune
o más corto-p
. Tenga en cuenta que esto elimina todas las ramas obsoletas de seguimiento remoto locales para cualquier rama remota que ya no exista en el control remoto :Aquí está la cita relevante de las notas de la versión 1.6.6 (énfasis mío):
Alternativa a la poda automática anterior para ramas de seguimiento remoto obsoletas
Alternativamente, en lugar de podar sus ramas locales de seguimiento remoto obsoletas
git fetch -p
, puede evitar realizar la operación de red adicional simplemente eliminando manualmente las ramas con las banderas--remote
o-r
:Ver también
fuente
X
yorigin/X
marcadores en el clon local (2 ramas), y luego estáX
en el control remoto (hacer 3 ramas).Pasos para eliminar una rama:
Para eliminar la rama remota:
Para eliminar la sucursal local , tiene tres formas :
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 lo borrará y lo enviará al control remoto al mismo tiempo ...Además,
git branch -D
que simplemente eliminan la rama local solamente ...-D
significa--delete --force
que eliminará la rama incluso si no está fusionada (forzar eliminación), pero también puede usar-d
qué significa--delete
que arroja un error respectivo del estado de fusión de la rama ...También creo la imagen a continuación para mostrar los pasos:
fuente
git branch -a
mostrará ramas locales y remotas. Será una ayuda para la introducción del diagrama.git remote prune origin
no elimina sus copias locales de las ramas eliminadas. El mismo efecto se logra usandogit fetch --prune
También puede usar lo siguiente para eliminar la rama remota
Que hace lo mismo que
pero puede ser más fácil de recordar.
fuente
git branch -d <local_branch>
ogit branch -D <local_branch>
para la eliminaciónConsejo: cuando eliminas ramas usando
o
solo se eliminan las referencias. Aunque 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
Esto es típicamente
git remote prune origin
.fuente
git push
operación anterior elimina la rama local y la rama remota.git remote prune
es una forma algo obsoleta de eliminar ramas de seguimiento remoto obsoletas, la forma más nueva de hacerlo es usargit fetch --prune
ogit fetch -p
.Si desea eliminar una rama, primero realice el pago en la rama que no sea la rama que se va a eliminar.
Eliminar la sucursal local:
Eliminar la rama remota:
fuente
fuente
-D
fuerza la eliminación. Siempre es mejor usar-d
, lo que te recordará si necesitas hacer algo peligroso.Esto es simple: simplemente ejecute el siguiente comando:
Para eliminar una rama de Git tanto local como remotamente, primero elimine la rama local con este comando:
(Aquí
example
está el nombre de la sucursal).Y después de eso, elimine la rama remota usando este comando:
fuente
Otro enfoque es:
ADVERTENCIA: Esto eliminará todas las ramas remotas que no existen localmente. O más ampliamente,
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).
fuente
Utilizo lo siguiente en mi configuración de Bash :
Entonces puedes llamar:
fuente
git push origin --delete $1
un archivo en su camino llamadogit-shoot
ygit shoot branchname
funcionará también.Eliminar localmente:
Para eliminar una sucursal local, puede usar:
Para eliminar una rama por la fuerza, use en
-D
lugar de-d
.Eliminar de forma remota:
Hay dos opciones:
Te sugiero que uses la segunda forma, ya que es más intuitiva.
fuente
Desde enero de 2013, GitHub incluyó un Delete branch botón al lado de cada sucursal en su página "Sucursales".
Publicación de blog relevante: crear y eliminar sucursales
fuente
Si desea completar estos dos pasos con un solo comando, puede crear un alias para él agregando lo siguiente a su
~/.gitconfig
:Alternativamente, puede agregar esto a su configuración global desde la línea de comando usando
NOTA : Si usa
-d
(d minúscula), la rama solo se eliminará si se ha fusionado. Para forzar la eliminación, deberá usar-D
(mayúscula D).fuente
&&
de;
modo que incluso si el primer comando falla, el segundo aún se ejecutará (a veces solo existe local o solo remoto).Para eliminar su sucursal local y remotamente
Pago a la sucursal maestra -
git checkout master
Eliminar su sucursal remota
git push origin --delete <branch-name>
Eliminar su sucursal local -
git branch --delete <branch-name>
fuente
También puedes hacer esto usando
git remote prune origin
Poda y elimina ramas de seguimiento remoto de una
git branch -r
lista.fuente
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:
Me parece que también uso los comandos
publish
y contrack
bastante frecuencia.fuente
Un comando de una línea para eliminar tanto local como remoto :
O agregue el alias a continuación a su ~ / .gitconfig . Uso:
git kill branch-name
fuente
git branch -D
cuidado en un script, ya que fuerza-elimina una rama sin verificar que se haya fusionado. Solía-d
estar a salvo.Eliminar ramas
Y para eliminar la rama remota:
fuente
Eliminar sucursal remota
git push origin :<branchname>
Eliminar sucursal local
git branch -D <branchname>
Eliminar pasos de sucursal local:
fuente
git push origin :<branchname>
ya empuja una rama 'vacía' al control remoto (por lo tanto, elimina la rama remota)Simplemente di:
fuente
es más fácil de recordar que
fuente
Ahora puedes hacerlo con la aplicación GitHub Desktop .
Después de iniciar la aplicación
Cambie a la rama que desea eliminar
En el menú "Rama", seleccione "No publicar ..." para eliminar la rama de los servidores de GitHub.
En el menú "Sucursal", seleccione "Eliminar" nombre_de_sucursal "..." para eliminar la sucursal de su máquina local (también conocida como la máquina en la que está trabajando actualmente)
fuente
Es muy simple:
Para eliminar la rama remota
O
Para eliminar sucursal local
fuente
--delete
lugar de-d
eliminar la rama remota.-d
La opción es un alias para--delete
y, si--delete
funciona-d
, también debería funcionar, si desea eliminar forzosamente una rama que puede usar en-D
lugar de-d
o--delete
.Para eliminar localmente - (normal)
Si su sucursal está en un proceso 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 sucursal.Entonces, o bien debes resolver el rebase / fusión. De lo contrario, puede forzar la eliminación utilizando,
Para eliminar en remoto :
Puedes hacer lo mismo usando:
Representación grafica:
fuente
Esto no funcionará si tiene una etiqueta con el mismo nombre que la rama en el control remoto:
En ese caso, debe especificar que desea eliminar la rama, no la etiqueta:
Del mismo modo, para eliminar la etiqueta en lugar de la rama que usaría:
fuente
Muchas de las otras respuestas conducirán a errores / advertencias. Este enfoque es relativamente infalible, aunque es posible que aún lo necesite
git branch -D branch_to_delete
si no está completamente fusionadosome_other_branch
, por ejemplo.La poda remota no es necesaria si eliminó la rama remota. Solo se usa para obtener los controles remotos más actualizados disponibles en un repositorio que está rastreando. He observado
git fetch
que agregará controles remotos, no los eliminará. Aquí hay un ejemplo de cuándogit remote prune origin
realmente hará algo:El usuario A realiza los pasos anteriores. El usuario B ejecutaría los siguientes comandos para ver las ramas remotas más actualizadas:
fuente
Me cansé de buscar 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:
Luego, cada vez que termino con una rama (fusionada
master
, por ejemplo) ejecuto lo siguiente en mi terminal:... que luego se elimina
my-branch-name
deorigin
que, así como a nivel local.fuente
--delete "$@"
y en-D "$@"
lugar de$1
manejarlo para múltiples ramas.git branch -d
(con minúscula 'd') primero para asegurarse de que los cambios se hayan fusionado, y luego presionar si tiene éxito (poner&&
entre comandos)Antes de ejecutar
asegúrese de determinar primero cuál es el nombre exacto de la rama remota ejecutando:
Esto le dirá qué ingresar exactamente para el
<branch>
valor. (branch
es sensible a mayúsculas y minúsculas)fuente
Utilizar:
Si está seguro de que desea eliminarlo, ejecute
Ahora, para limpiar las ramas remotas eliminadas, ejecute
fuente