Quiero eliminar una rama tanto localmente como remotamente.
$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' no se encuentra.
$ git branch -d origin/bugfix
error: branch 'origin/bugfix' no se encuentra.
$ git branch -rd origen/bugfix
Eliminada la rama remota origin/bugfix (era 2a14ef7).
$ git push
Todo actualizado
$ git pull
Desde github.com:gituser/gitproject
* [nueva rama] bugfix -> origin/bugfix
Ya está actualizado.
¿Qué debería hacer de forma diferente para eliminar con éxito la rama
remotes/origin/bugfix
rama tanto localmente como remotamente?
$ git push -d <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
.
Para eliminar la rama local utilice una de las siguientes opciones:
$ git branch -d branch_name
$ git branch -D branch_name
Nota: La opción -d
es un alias de --delete
, que sólo borra la rama si ya ha sido completamente fusionada en su rama ascendente. También puedes usar -D
, que es un alias de --delete --force
, que borra la rama "independientemente de su estado de fusión". [Fuente: man git-branch
]
A partir de Git v1.7.0, puedes borrar una rama remota usando
$ git push <remote_name> --delete <branch_name>
que puede ser más fácil de recordar que
$ git push <remote_name> :<branch_name>
que se añadió en Git v1.5.0 "para eliminar una rama remota o una etiqueta".
A partir de [Git v2.8.0][git-2.8.0] también puedes usar git push
con la opción -d
como alias de --delete
.
Por lo tanto, la versión de Git que tengas instalada dictará si necesitas usar la sintaxis más fácil o más difícil.
Del capítulo 3 de Pro Git por Scott Chacon:
Borrar ramas remotas
Supongamos que has terminado con una rama remota - digamos que tú y tus colaboradores habéis terminado con una característica y la habéis fusionado en la rama maestra de la remota (o en cualquier rama en la que esté tu línea de código estable). Puedes borrar una rama remota usando la sintaxis bastante obtusa
git push [nombreremoto] :[rama]
. Si quieres borrar tu rama server-fix del servidor, ejecuta lo siguiente:$ git push origen :serverfix Para [email protected]:schacon/simplegit.git
- [borrado] serverfix
Boom. No hay más ramas en tu servidor. Es posible que quieras escuchar esta página, porque necesitarás este comando, y es probable que olvides la sintaxis. Una forma de recordar este comando es recordando la sintaxis de
git push [remotename] [localbranch]:[remotebranch]
que repasamos un poco antes. Si dejas de lado la parte de[localbranch]
, entonces básicamente estás diciendo: "No tomes nada de mi lado y haz que sea[remotebranch]
".
He emitido git push origin: bugfix
y ha funcionado de maravilla. Scott Chacon tenía razón: querré dog ear esa página (o virtualmente dog ear respondiendo a esto en Stack Overflow).
[git-2.8.0]: https://github.com/git/git/blob/master/Documentation/RelNotes/2.8.0.txt
Luego debes ejecutar esto en otras máquinas
# Fetch changes from all remotes and locally delete
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune
para propagar los cambios.
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 ser más fácil de recordar.
Además de las otras respuestas, suelo utilizar la herramienta git_remote_branch. Es una instalación extra, pero te da una forma conveniente de interactuar con las ramas remotas. En este caso, para borrar:
grb delete branch
Encuentro que también uso los comandos publish
y track
con bastante frecuencia