在Git中获取最新标签的最简单方法是什么?
git tag a HEAD
git tag b HEAD^^
git tag c HEAD^
git tag
Run Code Online (Sandbox Code Playgroud)
输出:
a
b
c
Run Code Online (Sandbox Code Playgroud)
我应该编写一个脚本来获取每个标记的日期时间并进行比较吗?
我去年从Subversion转到Git作为我的日常VCS,我仍在努力把握"Git-think"的细节.
最近困扰我的那个是"轻量级"与注释与签名标签.对于所有实际用途来说,注释标签优于轻量级标签似乎是普遍接受的,但我发现为什么情况的解释似乎总是归结为"因为最佳实践"或"因为它们是不同的".不幸的是,这些都是非常不满意的论据而不知道为什么它是最佳实践或这些差异如何与我的Git用法相关.
当我第一次切换到Git时,轻薄的标签似乎是自切片面包以来最好的东西; 我可以指出一个提交并说"那是1.0".我很难掌握标签如何比这更好,但我当然不能相信世界的Git专家更喜欢任意注释标签!那么喧哗什么呢?
(奖励积分:为什么我需要签署一个标签?)
编辑
我已经成功地确信注释标签是一件好事 - 知道谁标记,何时重要!作为后续行动,有关良好标签注释的任何建议吗?两者都git tag -am "tagging 1.0" 1.0试图总结提交日志,因为上一个标记感觉就像丢失策略一样.
是否有一个衬垫向我显示所有git轻量级标签创建的日期?
像这样的东西:git show tags --format=date?
我需要一些方法来列出我们系统中所有标签的创建日期,但我不确定我是否可以通过git-log获取该数据.想法?
当我输入命令时:
git tag -l
Run Code Online (Sandbox Code Playgroud)
我得到了这样的结果:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
Run Code Online (Sandbox Code Playgroud)
而不是我想要的:
rc-0.9.0.0
rc-0.9.0.1
rc-0.9.0.2
rc-0.9.0.3
rc-0.9.0.4
rc-0.9.0.5
rc-0.9.0.6
rc-0.9.0.7
rc-0.9.0.8
rc-0.9.0.9
rc-0.9.0.10
rc-0.9.0.11
rc-0.9.0.12
Run Code Online (Sandbox Code Playgroud)
如何对当前列表进行排序以获得此类结果?
列出带有注释的所有标签似乎很容易,例如:
git tag -n99
Run Code Online (Sandbox Code Playgroud)
或者
git for-each-ref --format '%(refname:short) %(contents)' refs/tags
Run Code Online (Sandbox Code Playgroud)
也可以用于git log按创建者日期列出标签,例如(来自此处):
git log --tags --simplify-by-decoration --pretty="format:%cs %d"
Run Code Online (Sandbox Code Playgroud)
然而,这些都没有回答问题,因为据我所知:
git tag,因为标签指向标签注释对象,因此committerdate为空。您可以通过以下方式确认这一点git tag --format='%(committerdate)'
creatordate提交日期,以及带注释提交的标签创建日期,这对于这个问题来说也是无用的。git log,因为格式化程序中没有标签注释选项(而且这无论如何都没有意义,因为单个提交可以有多个标签。那么,有没有一种方法可以列出所有标签,按提交日期排序,并显示提交日期和注释?我不关心这个问题的未注释标签。