我正在编写一个shell脚本,我正在查看最新版本的repo。具体来说,我想将这个过程分解为多个步骤。
Checking out version: XX
我见过similar questions但是我没有看到如何将标记的名称保存到变量中(可能是因为我是一个带有shell脚本的菜鸟)。
答案 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