Problema: quiero una forma de eliminar todas las sucursales locales que tengo que no tienen control remoto. Es bastante fácil canalizar los nombres de las ramas en un git branch -D {branch_name}
, pero ¿cómo obtengo esa lista en primer lugar?
Por ejemplo:
Creo una nueva rama sin control remoto:
$ git co -b no_upstream
Enumero todas mis sucursales, y solo hay una con control remoto
$ git branch -a
master
* no_upstream
remotes/origin/HEAD -> origin/master
remotes/origin/master
¿Qué comando puedo ejecutar para obtener no_upstream
una respuesta?
Puedo correr git rev-parse --abbrev-ref --symbolic-full-name @{u}
y eso mostrará que no tiene control remoto:
$ git rev-parse --abbrev-ref --symbolic-full-name @{u}
error: No upstream configured for branch 'no_upstream'
error: No upstream configured for branch 'no_upstream'
fatal: ambiguous argument '@{u}': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Pero como esto es un error, no me dejará usarlo o canalizarlo a otros comandos. Tengo la intención de usar esto como un alias de script de shell git-delete-unbranched
o tal vez hacer una gema súper simple comogit-branch-delete-orphans