shell - 根据分支类型列出分支名称
问题描述
我在功能广告发布类型下有 git 分支,当我将输入作为发布或可能的字符串(re,rel..etc)与功能分支和其他分支类型相同时,我想显示发布分支。当我根据我的输入将分支类型作为发布或功能获取后,我现在有一个命令来给出分支类型,我想在我选择的类型下显示分支名称。
我有命令:
#!/bin/bash
read branchtype
git branch --remote --list origin/* | grep $branchtype | cut -d '/' -f2 | sort -u
#!/bin/bash
read branchtype
git branch --remote --list origin/* | grep $branchtype | cut -d '/' -f2 | sort -u
解决方案
首先,我认为如果您使用脚本的参数而不是阅读标准输入,您将有更轻松的时间。
其次,为什么要使用全局模式 ( origin/*
) 来返回所有内容,只是为了使用单独的程序 ( grep
) 进行过滤?
最后,也许我误解了,但我想像origin/feature/newThing
and origin/feature/coolUpgrade
and之类的分支名称origin/bugfix/oopsie
。选择 for feature
,那只cut -d '/' -f2 | sort -u
会吐出来feature
,没有别的。(也许你想要-f3
?)
试试这个:(首先创建文件 ~/bin/branchFilter ...)
$: cat ~/bin/branchFilter
#!/bin/bash
git branch --remote --list origin/*$1*
然后使用它。(确保您设置了可执行权限。)
$: branchFilter # no argument
origin/HEAD -> origin/master
origin/bugfix/bar
origin/bugfix/foo
origin/dev
origin/feature/otherName
origin/feature/test
origin/hotfix/thisIsBroken
origin/master
origin/preprod
origin/production
origin/qa
origin/sit
origin/uat
origin/wip
$: branchFilter feature
origin/feature/otherName
origin/feature/test
$: branchFilter bugfix
origin/bugfix/bar
origin/bugfix/foo
$: branchFilter fix
origin/bugfix/bar
origin/bugfix/foo
origin/hotfix/thisIsBroken
如果您真的需要origin/
从头开始,请使用sed
.
$: cat ~/bin/branchFilter
#!/bin/bash
git branch --remote --list origin/*$1* |
sed 's,origin/,,'
$: branchFilter fix
bugfix/bar
bugfix/foo
hotfix/thisIsBroken
如果您只需要从输入中读取(我认为这是一个糟糕的结构,但是您的程序),它仍然以相同的方式工作。
$: cat ~/bin/branchFilter
#!/bin/bash
read str
git branch --remote --list "origin/*$str*" |
sed 's,origin/,,'
推荐阅读
- r - 向 POSIXct 变量添加随机噪声
- python-3.x - 如何使用“随机”和“networkX”库生成图形?
- jquery - 用 Font Awesome 图标替换不同的链接特定文本,会导致相同图标的重复
- webview - 从应用内浏览器重定向回移动应用
- uipath - 如何通过 RPA UIPath 打开 IIS
- algorithm - 找出可以从一块木头上切割的最大件数
- amazon-web-services - 在 ec2 ubuntu 服务器上运行 google chrome headless
- python - Flask 文件上传权限被拒绝
- drupal - 如何在 Drupal 8 中使用 hook_node_access
- javascript - 即使输入字段中没有文本也不会收到警报