Problema: desejo uma maneira de excluir todas as filiais locais que possuo e que não possuem um controle remoto. É fácil canalizar os nomes das ramificações em um git branch -D {branch_name}
, mas como faço para obter essa lista em primeiro lugar?
Por exemplo:
Eu crio uma nova filial sem um controle remoto:
$ git co -b no_upstream
Eu listo todos os meus branches, e há apenas um com controle remoto
$ git branch -a
master
* no_upstream
remotes/origin/HEAD -> origin/master
remotes/origin/master
Que comando posso executar para obter no_upstream
uma resposta?
Posso correr git rev-parse --abbrev-ref --symbolic-full-name @{u}
e isso vai mostrar que não tem controle 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>...]'
Mas como isso é um erro, ele não me deixa usá-lo ou canalizá-lo para outros comandos. Pretendo usar isso como um alias de script de shell git-delete-unbranched
ou talvez fazer um Gem super simples comogit-branch-delete-orphans