我有一个命令,可以删除所有不再存储库中的本地分支,我正在尝试将其添加到.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\///'
这个别名似乎出了问题。如果我删除这一部分,命令就可以执行(但只是删除每个分支,而不是保留仓库中仍然存在的那一个分支),并且没有错误。
请问如何避免这种情况?
另外,如果方便的话,请解释一下这个别名的作用以及为什么有三个斜杠?
.gitconfig
的提示很好;如果您使用git-config
命令,我之前没有意识到git会为您解决转义问题。 - Andy Stewart