Open alwaystest opened 7 years ago
标签(空格分隔): shell
团队使用Git在一个Repo中协同开发的时候,使用PR来提交合并请求,合并完开发分支之后,有时候会忘记删除这个分支,所以想找一个批量删除远程分支的方法。
删除命令
git push origin :branch
eg: git push origin :eric_test意思就是把一个空的分支推送到origin对应的远端仓库的eric_test分支,也就是删除啦。
git push origin :eric_test
origin
eric_test
git push -d origin eric_test 功能和上边一样的啦
git push -d origin eric_test
现在的问题就是怎么把要删除的远程分支过滤出来。
StackOverflow说用awk。
awk
git branch --remote可以显示远程分支。
git branch --remote
使用grep可以筛选出包含特定pattern的分支名,但是会多出remote仓库的别名,比如origin。
删除需要 git push -d origin eric_test, 而grep筛选出来的是origin/eric_test,这里就需要使用awk来对刷选出来的字符串进行修改了。
origin/eric_test
我的理解:
grep eric 和 awk '/eric/{print $0}'是一样的。
grep eric
awk '/eric/{print $0}'
注意: 这里的/eric/中的/和-F/并没有关系,我的理解是分割pattern和action的,类似于vim中的正则操作也是使用/来分割pattern和替换部分(:%s/pattern/replacement),或分割pattern和action(:%g/pattern/action)。
/eric/
/
-F/
‘awk -F/’ 意思是指定 `/``作为String切分的分隔符。默认是空格。
awk -F/ '/pattern/{print $x}'的意思是先筛选出包含pattern的字符串(当然如果用正则pattern,则是符合pattern的字符串),然后使用 -F指定的分割符即/来分割字符串,这样就可以筛选出符合规则的分支名,并去除掉不用的部分了。
awk -F/ '/pattern/{print $x}'
pattern
-F
awk 理解
标签(空格分隔): shell
团队使用Git在一个Repo中协同开发的时候,使用PR来提交合并请求,合并完开发分支之后,有时候会忘记删除这个分支,所以想找一个批量删除远程分支的方法。
删除命令
git push origin :branch
eg:
git push origin :eric_test
意思就是把一个空的分支推送到origin
对应的远端仓库的eric_test
分支,也就是删除啦。git push -d origin eric_test
功能和上边一样的啦现在的问题就是怎么把要删除的远程分支过滤出来。
StackOverflow说用
awk
。git branch --remote
可以显示远程分支。使用grep可以筛选出包含特定pattern的分支名,但是会多出remote仓库的别名,比如
origin
。删除需要
git push -d origin eric_test
, 而grep筛选出来的是origin/eric_test
,这里就需要使用awk来对刷选出来的字符串进行修改了。我的理解:
grep eric
和awk '/eric/{print $0}'
是一样的。注意: 这里的
/eric/
中的/
和-F/
并没有关系,我的理解是分割pattern和action的,类似于vim中的正则操作也是使用/
来分割pattern和替换部分(:%s/pattern/replacement),或分割pattern和action(:%g/pattern/action)。‘awk -F/’ 意思是指定 `/``作为String切分的分隔符。默认是空格。
awk -F/ '/pattern/{print $x}'
的意思是先筛选出包含pattern
的字符串(当然如果用正则pattern,则是符合pattern的字符串),然后使用-F
指定的分割符即/
来分割字符串,这样就可以筛选出符合规则的分支名,并去除掉不用的部分了。