Git: eliminar sucursal de forma local y remota

Si bien es muy común tener que crear y eliminar ramas en Git, desafortunadamente la sintaxis no es muy fácil de recordar para todos. Incluso como usuario desde hace mucho tiempo...

Si bien es muy común tener que crear y eliminar ramas en Git, desafortunadamente la sintaxis no es muy fácil de recordar para todos. Incluso como usuario de Git desde hace mucho tiempo, necesito buscar la sintaxis como un recordatorio, lo que sin duda es la principal motivación detrás de escribir este breve artículo.

Las siguientes dos secciones describirán cómo eliminar ramas en Git, tanto para repositorios locales como remotos, junto con algunos indicadores y sintaxis alternativos.

Eliminación de una sucursal local

Esta es la parte fácil, ya que solo está trabajando en el repositorio de Git que (presumiblemente) posee y controla. Aquí está el comando que probablemente necesitarás:

1
$ git branch -d <local_branch>

Aquí, la opción -d le dice a Git que elimine la rama especificada, y en realidad es un alias para el indicador --delete. Otra alternativa es usar -D en su lugar, que fuerza la eliminación y es un alias para --delete --force:

1
$ git branch -D <local_branch>

Esto eliminará la rama, incluso si aún no está fusionada, así que tenga esto en cuenta cuando la use. En general, debe usar la opción -d ya que se considera más segura.

Otra cosa a tener en cuenta: no puede eliminar la rama que está actualmente desprotegida, incluso con la opción -D, que mostramos aquí con la rama issue-260:

1
2
3
4
$ git checkout issue-260
Switched to branch 'issue-260'
$ git branch -D issue-260
error: Cannot delete branch 'issue-260' checked out at '/Users/scott/projects/git-examples'

Primero, revisa una rama diferente, como maestro o tu rama de desarrollo, y luego bórrala:

1
2
3
4
5
$ git checkout master
Switched to branch 'master'
Your branch is up-to-date with 'origin/master'.
$ git branch -d issue-260
Deleted branch issue-260 (was 3acde55).

Ahora podemos eliminar la rama sin problemas.

Eliminación de una sucursal remota

Eliminar una rama remota es un poco más complicado que eliminar una local, ya que está trabajando con un repositorio que probablemente ni siquiera esté en su máquina. La sintaxis que puede usar también depende de su versión de Git, así que tome nota.

1
$ git push <remote_repo> --delete <remote_branch>

Esto se agregó a Git en v1.7.0, y en Git v2.8.0 agregaron la capacidad de usar -d en lugar del indicador completo --delete.

El formato que se muestra arriba, en mi opinión, es la sintaxis más fácil de recordar. Pero si tiene una versión anterior de Git (v1.5.0+), entonces deberá usar esto en su lugar:

1
$ git push <remote_repo> :<remote_branch>

Para recordar esto, Scott Chacon lo pone muy bien en su libro:

Una manera de recordar este comando es recordando la sintaxis git push [remotename] [localbranch]:[remotebranch] que repasamos un poco antes. Si omites la porción [localbranch], básicamente estás diciendo: "No tomes nada de mi parte y haz que sea [remotebranch]".

Ahora que la rama ya no está en el repositorio remoto, otras máquinas también querrán actualizarse. Para hacer esto, querrán buscar la actualización:

1
$ git fetch --all --prune

La opción --prune le dice a Git que elimine todas las referencias de seguimiento remoto (es decir, nuestra rama) que ya no existen en el repositorio remoto. Tenga en cuenta, sin embargo, que esta poda no se aplica a las etiquetas. Querrás usar --prune-tags para eso.

Licensed under CC BY-NC-SA 4.0