Git Checkout最新标签

时间:2013-07-01 21:34:31

标签: git bash shell tags

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

  1. 我想将存储库最新标记保存到变量
  2. 打印Checking out version: XX
  3. 查看最新标记
  4. 我见过similar questions但是我没有看到如何将标记的名称保存到变量中(可能是因为我是一个带有shell脚本的菜鸟)。

6 个答案:

答案 0 :(得分:80)

# 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

答案 1 :(得分:18)

git describe --tags应该为您提供信息。

bash / shell脚本:

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

答案 2 :(得分:8)

在某些存储库中,git describe --tags没有提供任何信息,而简单的git tag | tail -1可能会让您错误的标记,因为git会以奇怪的方式对标记进行排序。

对我而言,最好的命令是尾部的变体

  

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

答案 3 :(得分:1)

为了将信息放入变量,您可以分配它:

myvar=myvalue

但是,您想要计算要分配的值,而不仅仅是为变量赋值。在您的情况下,您希望将命令的输出分配给变量。

首先,您必须弄清楚如何获取最后一个标记名称。我会把它留给你,因为你还没有说过如何创建标签名称。

然后,如果您有一个提供最后一个标记名称的命令,则需要将该名称分配给变量。 Bash通过“命令替换”来做到这一点。

例如:thetagname=$( command_to_get_tag_name )

因此,如果您只是采用git报告的最后一个标记:

git tag | tail -1

然后您可以将它分配给这样的变量:

thetagname=$( git tag | tail -1)

你可以使用/看到这样的值:

echo $thetagname

或者像user1281385这样说:

echo ${thetagname}

这两种方法是相同的,只是第二种方法允许您将文字文本与变量值组合:

echo ${thetagname}ing

会将“ing”附加到$ thetagname的内容中。为了防止bash认为“thetagnameing”是变量,必须使用括号。

bash手册页有一个名为EXPANSION的部分,其中解释了7种扩展。命令替换就是其中之一。 bash手册页面相当大,并且确实多次重复所有有趣的关键字,因此搜索其中的内容真的很烦人。以下是有关如何查找EXPANSION部分的一些提示(并了解有关寻呼机“少”的信息):

启动手动阅读器阅读bash手册页,如下所示:

man bash

通过在显示屏中键入/^EXPANSION,一旦您进入阅读器,就会在行的开头搜索“EXPANSION”一词。键入/后,您将在屏幕底部看到一个/,但手册页仍然在那里。这是搜索模式的命令。然后键入^EXPANSION,您也会在屏幕底部看到它。 ^表示“在行的开头搜索事物”,EXPANSION表示“查找文字字符串”EXPANSION“。然后键入<enter> - 您应该在第一次出现的时候出现在EXPANSION中在这里,它描述了bash shell在你输入之后和执行转换命令之前在你的行上所做的所有扩展。

在寻呼机中,您可以输入h以获取可能命令的列表。

我希望这不是太基础。如果你以前没见过,很难弄清楚。

答案 4 :(得分:0)

“git tag --contains | tail -1”,(git tag --contains)列出当前分支中的所有标记,(tail -1)将输出结果的计数限制为l,并且它是最新的。

答案 5 :(得分:0)

只需运行common-passwords.txt.gz