首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于查找特定类型的上一个分支的Git命令

用于查找特定类型的上一个分支的Git命令
EN

Stack Overflow用户
提问于 2019-05-03 05:47:46
回答 2查看 63关注 0票数 2

我们在我的组织中使用gitflow,特别是发布分支的概念。我们还支持多个同时发布分支。示例存储库可能如下所示:

代码语言:javascript
运行
复制
master -> a
           \
            \    c <-release/v1.0.0    e <-release/v1.1.0    g <-release/v1.2.0
             \  /                     /                     /
    develop-> b ---------------------d---------------------f 

我想要做的是给出一个当前签出的发布分支,找到前身发布分支。例如:

代码语言:javascript
运行
复制
-release/v1.2.0 is checked out, return release/v1.1.0
-release/v1.1.0 is checked out, return release/v1.0.0
-release/v1.0.0 is checked out, return nothing, there is no currently active previous release

我们使用它来确定哪些文件在不同版本之间发生了更改,以便部署到遗留系统。

假设:发布分支将始终遵循release/v.x.y.z格式,其中x、y和z是版本号。发布分支总是根据这些版本号按顺序组织。v1.2.1 > v1.2.0v1.2.0 > 1.1.0

我考虑使用git branch --list -a *release/v*的某种组合来获得所有发布分支的列表,并使用一些perl命令对结果进行排序,但是我想知道是否有一些git rev-parsegit rev-list的git命令可以做到这一点。

注意:我使用的是unix工具的z/OS USS端口,git,bash,grep等。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-03 12:41:07

首先检查(使用最新的Git2.21) sort order for tags是否可以用于分支:

代码语言:javascript
运行
复制
git branch --sort=version:refname

这样,您就可以在git grepping之前获得正确的订单。

OP patrickw使用以下方式提到in the comments

代码语言:javascript
运行
复制
git branch --list -r *release/v* --sort=-version:refname
票数 2
EN

Stack Overflow用户

发布于 2019-05-03 06:04:20

没有特定于git的命令,但是您不需要涉及Perl,标准的bash排序应该可以完成这项工作:

代码语言:javascript
运行
复制
git branch --list -a *release/v* | sort -V | grep -B1 <current_version> | head -1

(请注意-V选项->man)

还要注意的是,如果不进行一些文本处理,您甚至无法获得当前分支的名称。请参阅此问题的答案here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55960686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档