首页 > 解决方案 > 如何使用 bash 命令检查最新版本的 git 分支?

问题描述

我正在~/.profile为常用命令字符串构建一些别名。一种情况是当我开始一个新的功能分支时,我将检查具有命名约定的当前基础release/1.1.0,然后从那里创建我的新feature/feature-name分支。

我的问题是如何让我的 bash 命令自动检出最新版本。如果我手动输入并在结果上加标签,一些项目有很多可用的,如release/1.0.0, release/1.1.0, release/1.1.2, release/1.2.0.

我可以添加什么到我的以下功能,可以默认为最新的可用版本?

relb(){
  git checkout release/???
  git pull
}

标签: bashgitunix

解决方案


您可以使用--sort='-v:refname'作为选项来git branch按 refname 进行版本排序,1降序(the -);该--format选项确保输出中没有不需要的空格,并且head -n1只返回一个分支:

git checkout \
    "$(git branch \
        --list \
        --sort='-v:refname' \
        --format='%(refname:short)' \
        'release/*' \
    | head -n1)"

你可能不得不git fetch先。

或者,您可以完全不使用任何外部工具:1

git checkout \
    "$(git for-each-ref \
        --sort='-v:refname' --format='%(refname:short)' --count=1 \
        refs/heads/release/)"

1帽子提示Hauleth指出git branch内置排序并且git for-each-ref可以做到这一切。


推荐阅读