我想显示所有标签的历史记录。使用git git tag --list
我只看到例如v1.0.0但没有关于底层提交,标记消息和日期。然后我想我可以使用git log --tags
但是这会将所有标记添加到提交历史记录中(如果我理解正确的话)并且列表很大(包括所有提交和标记)。我怎样才能获得标签列表 - 类似于
* v1.0.0,873bf3b,Christoph Strauss,2016-04-20,我的第一个标签
...
修改:
git rev-list -n 1 $TAG
或git 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"
我做错了什么?不幸的是,我对git很新,所以任何解释都会非常感激!看来,这两个答案都应该接近我的需要,但我不知道在我的案例中有什么不对......
答案 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 log
从HEAD
或指定的提交开始,然后遍历图表以查找从您指定的起始点可到达的所有提交。然后它将所有这些提交排序为某个排序顺序,并显示所有这些提交。 --no-walk
标记会停止图表行走(但不会排序,并且没有--do-not-sort-at-all
选项,因此您最多只能控制要执行的排序;请参阅the documentation详情。)