Git全局别名删除本地分支不在远程



我有这个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命令一样运行。

试试这个:

$ 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"

最新更新