Si bien es muy común tener que crear y eliminar ramas en Git, desafortunadamente la sintaxis no es fácil de recordar para todos. Incluso como usuario de Git desde hace mucho tiempo, necesito buscar la sintaxis como recordatorio, que es en realidad 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.
Te puede interesar:Git: volver a una confirmación anteriorEliminar 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á:
$ git branch -d <local_branch>
Aquí el -d
La opción le dice a Git que elimine la rama especificada, y en realidad es un alias para la --delete
bandera. Otra alternativa es utilizar -D
en su lugar, que fuerza la eliminación y es un alias para --delete --force
:
$ 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 utilizar el -d
opción 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 -D
opción, que mostramos aquí con la issue-260
rama:
$ 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, busque una rama diferente, como master
o su rama de desarrollo, y luego elimínela:
$ 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.
Te puede interesar:Git: revertir una fusiónEliminar una rama 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.
$ 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 completo --delete
bandera.
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 +), deberá usar esto en su lugar:
$ git push <remote_repo> :<remote_branch>
Para recordar esto, Scott Chacon lo pone muy bien en su libro:
Te puede interesar:Git: enviar etiquetas a un repositorio remotoUna forma de recordar este comando es recordando el git push [remotename] [localbranch]:[remotebranch]
sintaxis que repasamos un poco antes. Si dejas el [localbranch]
, entonces básicamente estás diciendo: «No tomes nada de mi lado y haz que sea [remotebranch]
. »
Ahora que la rama se ha ido del repositorio remoto, otras máquinas también querrán actualizarse. Para hacer esto, querrán fetch
la actualización:
$ git fetch --all --prune
los --prune
La opción le dice a Git que elimine todas las referencias de seguimiento remoto (es decir, nuestra rama) que ya no existen en el repositorio remoto. Sin embargo, tenga en cuenta que esta poda no se aplica a las etiquetas. Querrás usar --prune-tags
para eso.