我正在尝试添加git别名,以提示我删除所有本地git分支。我已经走了很远,我到达了以下地方:
pdb = "! sh -c 'git branch -vv | grep -v \"origin/.*\" | awk \"{print $1}\" | xargs -L1 -I{} -p git branch -D {}' -"
第一部分将列出所有具有详细输出的分支,以便在通过管道传输到grep
时,可以使用远程副本过滤掉这些分支。 awk
然后应使用该输出的第一部分,即分支名称,并将其发送到xargs
命令。我遇到的麻烦是awk
会将整个详细输出传递给xargs
。
这个答案使我更加接近,但是我仍然没有从awk
获得预期的输出
https://stackoverflow.com/a/25954749/3356508
$ git pdb
git branch -D master-test1 9837ec0f0 test commit 1 ?...y
error: branch 'master-test1 9837ec0f0 test commit 1' not found.
git branch -D master-test2 2810823bc test commit 2 ?...y
error: branch 'master-test2 2810823bc test commit 2' not found.
答案 0 :(得分:1)
无法测试您的问题,但是我认为这是由于您没有在awk中转义$
,所以您最终进行了简单打印,默认情况下会打印所有内容。
尝试:
pdb = "! sh -c 'git branch -vv | grep -v \"origin/.*\" | awk \"{print \\$1}\" | xargs -L1 -I{} -p git branch -D {}' -"