man git-config
diz:
The syntax is fairly flexible and permissive; whitespaces are mostly ignored. The # and ; characters begin comments to the end of line, blank lines are ignored.
Então:
branch-excise = !bash -c 'git branch -D $1; git push origin --delete $1'
é equivalente a:
#!/usr/bin/env bash
bash -c 'git branch -D $1
A execução do script acima é impressa:
/tmp/quote.sh: line 3: unexpected EOF while looking for matching '''
/tmp/quote.sh: line 4: syntax error: unexpected end of file
Uma solução é colocar um comando inteiro em "
:
branch-excise = !"bash -c 'git branch -D $1; git push origin --delete $1'"
No entanto, ainda não funciona porque $1
está vazio:
$ git branch-excise master
fatal: branch name required
fatal: --delete doesn't make sense without any refs
Para que funcione, você precisa criar uma função fictícia em .gitconfig
e chamá-la assim:
branch-excise = ! "ddd () { git branch -D $1; git push origin --delete $1; }; ddd"
Uso:
$ git branch-excise master
error: Cannot delete the branch 'master' which you are currently on.
(...)