我需要某种方式在创建它们的日期之前列出系统中的所有标记,但是不确定是否可以通过git-log获得该数据。有想法吗?
我需要某种方式在创建它们的日期之前列出系统中的所有标记,但是不确定是否可以通过git-log获得该数据。有想法吗?
Answers:
按标签创建日期排序适用于带注释的轻量级标签:
git for-each-ref --sort=creatordate --format '%(refname) %(creatordate)' refs/tags
git for-each-ref --format="%(taggerdate): %(refname)" --sort=-taggerdate --count=10 refs/tags
正是我所需要的。谢谢!
%(contents)
如有必要,可以使用添加注释,例如git for-each-ref --sort='*authordate' --format='%(taggerdate:short) | %(tag) | %(contents)' refs/tags
git for-each-ref --sort=taggerdate --format '%(tag)'
--sort=creatordate
适用于--sort=taggerdate
带注释的标签和未带注释的标签,但似乎仅适用于带注释的标签。使用git version 2.16.3
Git 2.8(2016年3月)记录了另一个可追溯到git 1.4.4(Oct2006)的选项。
参见Eric Wong()的commit e914ef0(2016年1月5日)。(由Junio C Hamano合并--在commit 108cb77中,2016年1月20日)ele828
gitster
看到新的 Documentation/git-for-each-ref.txt
对于提交和标签的对象,特殊
creatordate
和creator
领域将对应于从适当的日期或名称,电子邮件最新的元组committer
或tagger
域取决于对象类型。
它们旨在用于带注释的标签和轻量级标签的混合。
因此,使用creatordate
带有标签的作品:
git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
要么:
git tag --sort=-creatordate
正如我在“ 如何按rc-XYZW形式的版本字符串顺序对git标签进行排序? ”中详细介绍的那样,您可以将排序顺序添加到git tag
(自2014年6月Git 2.0起)。
该排序顺序包括taggerdate作为字段名称(在中列出git for-each-ref
) 。这允许(由提到DarVar 以下)
作为一个例子,在回购将列出最后的标签:git tag --sort=taggerdate
git/git
v2.10.0
v2.9.1
v2.9.2
v2.9.3
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.10.0
默认顺序不是(git tag
):
v2.1.2
v2.1.3
v2.1.4
v2.10.0
v2.10.0-rc0
v2.10.0-rc1
v2.10.0-rc2
v2.2.0
creatordate
!
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
也很好的输出(没有日期字段):
git log --tags --decorate --simplify-by-decoration --oneline
要查看具有依赖项和条带化线性提交的完整历史记录(仅重要事件,例如标记和分支/合并):
git log --graph --decorate --simplify-by-decoration --oneline --all
git log --tags --simplify-by-decoration --pretty="format:%ci %d" | grep "tag:"
它最适合我。
这种单线显示日期和标签,没有大惊小怪。
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
输出:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
如果您不喜欢默认情况下如何对标签进行排序,则可以使用选项--sort=creatordate
(例如)按日期进行排序。有关更多详细信息,请参见VonC答案。
要根据提交日期对带注释的标签和轻量级标签进行完全排序,我在使用:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
该命令将按时间顺序列出每个标签和关联的提交对象ID。
以下内容取决于提交,因此,提交是否具有日期信息并不重要:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
乔什·李(Josh Lee)的上述答案取决于标签日期,以使订单正确无误。
tac
是什么-可能会将其更改为more
。无论如何,您的命令效果很好-谢谢!