如何使用来自`git log --tags`的信息的`git tag --list`

时间:2016-04-20 07:19:34

标签: windows git

我想显示所有标签的历史记录。使用git git tag --list我只看到例如v1.0.0但没有关于底层提交,标记消息和日期。然后我想我可以使用git log --tags但是这会将所有标记添加到提交历史记录中(如果我理解正确的话)并且列表很大(包括所有提交和标记)。我怎样才能获得标签列表 - 类似于 * v1.0.0,873bf3b,Christoph Strauss,2016-04-20,我的第一个标签
...

修改:

  • 我正在开发Windows。
  • 从第一个链接:git rev-list -n 1 $TAGgit rev-list -n 1 %TAG%返回TAG未知
  • 来自第二个链接:git for-each-ref --format='%(objectname)' 'refs/tags/v.*' 'refs/tags/v[0-9]*' | xargs -n 1 git log -1 --pretty=format:"%d & %s & %b"
    返回xargs unknown,我检查了之前工作的部分(没有输出)

我做错了什么?不幸的是,我对git很新,所以任何解释都会非常感激!看来,这两个答案都应该接近我的需要,但我不知道在我的案例中有什么不对......

1 个答案:

答案 0 :(得分:1)

大多数答案都倾向于假设你有一个不错的操作系统(即Linux / BSD / MacOS,但不是Windows ......或者,如果你有Windows,你就有一些体面的命令它的行环境,所以你至少可以像在Unix-ish盒子里一样工作)。因此所有管道进入xargs的命令,使用awk等等。 (我相信,这些工具 可用于Windows,但我会尽力避免使用Windows。)

然而,看起来,您希望为已标记的提交获取git log输出,并为这些提交仅 。如果是这样,你很幸运,因为git可以在没有任何外部程序帮助的情况下完成此任务。

您需要的命令是:

git log --no-walk --tags

(根据需要添加额外的--format=...--pretty=format:...)。 --tags参数告诉git log使用refs/tags/中的所有标记作为要显示的起点,而--no-walk告诉git log不要使用提交图。

通常,git logHEAD或指定的提交开始,然后遍历图表以查找从您指定的起始点可到达的所有提交。然后它将所有这些提交排序为某个排序顺序,并显示所有这些提交。 --no-walk标记会停止图表行走(但不会排序,并且没有--do-not-sort-at-all选项,因此您最多只能控制要执行的排序;请参阅the documentation详情。)