Jos*_*Lee 152
如果它是带注释的标签,您可以使用标签日期:
git for-each-ref --sort=taggerdate --format '%(refname) %(taggerdate)' refs/tags
Run Code Online (Sandbox Code Playgroud)
但如果它是一个轻量级标签,则没有关于它何时被创建的信息(它只是命名一个对象).
Von*_*onC 49
Git 2.8(2016年3月)记录了另一个可追溯到git 1.4.4(2006年10月)的选项.
请参阅Eric Wong()提交的e914ef0(2016年1月5日).(由Junio C Hamano合并- -在提交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; }'
Run Code Online (Sandbox Code Playgroud)
要么:
git tag --sort=-creatordate
Run Code Online (Sandbox Code Playgroud)
正如我在" 如何按形式rc-XYZW的版本字符串顺序对git标签排序? "中详述的那样,您可以添加排序顺序git tag
(自2014年6月起Git 2.0).
该排序顺序包括字段名称(列在其中git for-each-ref
) taggerdate.这允许git tag --sort=taggerdate
(下面由DarVar 提到)
作为一个例子,在repo中它将最后列出标签: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
Run Code Online (Sandbox Code Playgroud)
默认顺序不是(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
Run Code Online (Sandbox Code Playgroud)
gav*_*koa 33
git log --tags --simplify-by-decoration --pretty="format:%ci %d"
Run Code Online (Sandbox Code Playgroud)
来自(没有日期字段)的输出也很好:
git log --tags --decorate --simplify-by-decoration --oneline
Run Code Online (Sandbox Code Playgroud)
要查看具有依赖项和条带线性提交的完整历史记录(仅限基本事件,如标记和分支/合并):
git log --graph --decorate --simplify-by-decoration --oneline --all
Run Code Online (Sandbox Code Playgroud)
elb*_*ero 12
这个单行显示日期和标签,没有任何大惊小怪.
git tag --format='%(creatordate:short)%09%(refname:strip=2)'
Run Code Online (Sandbox Code Playgroud)
输出:
2015-04-01 storaged-2.0.0
2015-06-11 storaged-2.1.0
2015-08-06 storaged-2.1.1
...
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢默认情况下标记的排序方式,则可以使用该选项按日期排序--sort=creatordate
.有关详细信息,请参阅VonC答案.
Yan*_*aud 11
要根据提交日期对已注释的标签和轻量级标签进行排序,我正在使用:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
Run Code Online (Sandbox Code Playgroud)
此命令将按时间顺序列出每个标记和关联的提交对象ID.
Zam*_*col 10
git tag --sort=-taggerdate
Run Code Online (Sandbox Code Playgroud)
根据手册页,"前缀 - 按值的降序排序".
git tag
使用相同的排序键git-for-each-ref
,这是键记录的位置.
注意:我的git --version
是git version 2.25.1
.
对于所有标签的列表-l
,每个标签的消息字段最多 99 行 ( -n99
),按时间顺序排列,最新标签位于最后,请执行以下操作:
git tag -l -n99 --sort=taggerdate
Run Code Online (Sandbox Code Playgroud)
(我的首选形式)要颠倒时间顺序,将最新的标签放在前面-
,在前面添加一个减号( ) taggerdate
,如下所示:
git tag -l -n99 --sort=-taggerdate
Run Code Online (Sandbox Code Playgroud)
更进一步:
要也在标签内搜索并仅显示my string
名称中包含字符串的标签,请添加'*my string*'
到末尾。请注意,星号 ( *
) 是搜索模式中的通配符:
git tag -l -n99 --sort=-taggerdate '*my string*'
Run Code Online (Sandbox Code Playgroud)
要仅显示标签名称,而不显示最多 99 行的标签消息,只需删除该-n99
部分:
git tag -l --sort=-taggerdate '*my string*'
Run Code Online (Sandbox Code Playgroud)
小智 5
以下依赖于提交,因此它是否具有提交的日期信息并不重要:
git log --tags --decorate --simplify-by-decoration|grep ^commit|grep tag|sed -e 's/^.*: //' -e 's/)$//' -e 's/,.*$//'|tac
Run Code Online (Sandbox Code Playgroud)
Josh Lee 上面的答案依赖于标记日期来使订单正确。
归档时间: |
|
查看次数: |
44755 次 |
最近记录: |