我有这个 bash 代码,用于修剪遥控器上不存在的本地分支:
git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d
我想把它变成一个 git全局别名,所以我可以像这样运行所有的魔法:
git cleanup
到目前为止,我正在尝试这个(但它不起作用):
git config --global alias.cleanup "git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d"
它抱怨“git”不是命令。我尝试将第一个git设为!git
但是它只列出git config
的所有选项,就好像我的整个别名命令错误一样。
注意
我知道这对于bash别名并不是太棘手,但是我想尝试将它设为git别名,以便它像git命令一样运行。
答案 0 :(得分:3)
试试这个:
$ git config --global alias.cleanup '!bash -c "git fetch --prune && git branch -r | awk '"'"'{print $1}'"'"' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '"'"'{print $1}'"'"' | xargs git branch -d"'
或者,只需打开文件~/.gitconfig
并添加:
[alias]
cleanup = !bash -c \"git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d\"
然后确认:
$ git config --list| grep alias
alias.cleanup=!bash -c "git fetch --prune && git branch -r | awk '{print $1}' | egrep -v -f /dev/fd/0 <(git branch -vv | grep origin) | awk '{print $1}' | xargs git branch -d"