【发布时间】:2015-07-22 16:07:37
【问题描述】:
我有这个命令可以删除所有不在 repo 中的本地分支,我正在尝试将其添加到 .gitconfig 中:
git checkout master && git fetch -p && git branch -l | sed 's/* master//' > /tmp/gitlocal.txt && git branch -r | sed 's/origin\///' > /tmp/gitremote.txt && grep -Fxv -f /tmp/gitremote.txt /tmp/gitlocal.txt | xargs git branch -D
我正在尝试将其作为别名,但我遇到了一些转义问题
cleanbranches = "!f() { git checkout master && git fetch -p && git branch -l | sed 's/* master//' > /tmp/gitlocal.txt && git branch -r | sed 's/origin\///' > /tmp/gitremote.txt && grep -Fxv -f /tmp/gitremote.txt /tmp/gitlocal.txt | xargs git branch -D; }; f"
经过反复试验,我得出结论
sed 's/origin\///'
正在使别名中断。如果我删除这部分,则执行命令(但它只是删除每个分支,而不是将分支保留在 repo 上),并且没有错误
对我如何逃脱有任何帮助吗?
额外的,但不是必需的,如果您能解释别名的那部分在做什么以及为什么有 3 个斜线?
【问题讨论】: