Git Checkout最新标签

BFT*_*ick 43 tags git bash shell

我正在写一个shell脚本,我想查看最新版本的repo.具体来说,我想将这个过程分成多个步骤.

  1. 我想将存储库最新标记保存到变量中
  2. 打印 Checking out version: XX
  3. 查看最新标签

我见过类似的问题,但我没有看到如何将标签的名称保存到变量中(可能是因为我是一个带有shell脚本的菜鸟).

Jos*_*žek 87

# Get new tags from remote
git fetch --tags

# Get latest tag name
latestTag=$(git describe --tags `git rev-list --tags --max-count=1`)

# Checkout latest tag
git checkout $latestTag
Run Code Online (Sandbox Code Playgroud)

  • 更加密集,跳过变量`git checkout $(git describe --tags`git rev-list --tags --max-count = 1`) (5认同)
  • @ThorSummoner谢谢,但是您的后记错失了格式。使用嵌套的$()代替:git checkout $(git describe --tags $(git rev-list --tags --max-count = 1)) (2认同)
  • 应该接受答案。最完整且万无一失的方法。 (2认同)

exu*_*sum 21

git describe --tags 应该给你信息.

bash/shell脚本:

#!/bin/bash
...
latesttag=$(git describe --tags)
echo checking out ${latesttag}
git checkout ${latesttag}
Run Code Online (Sandbox Code Playgroud)

  • 我会 `git checkout master;git pull` 然后是脚本的其余部分 (2认同)
  • 如果您的最新提交没有标签,“git descibe --tags”会根据该最新标签输出可排序的描述,以及自该标签以来的提交数量。@josef-ježek 的答案应该是公认的答案 (2认同)
  • 如果最新的提交没有被标记,最好使用“gitdescribe --tag --abbrev=0”来删除短哈希。 (2认同)

小智 11

在某些存储库中,由于git以奇怪的方式对标记进行排序git describe --tags,因此不提供任何信息和简单git tag | tail -1可以使您获得错误的标记.

对我来说,最好的命令是尾部的变化

VERSION = $(git tag | sort -V | tail -1)