为什么每个ref的git不能正确地对标签排序?
当我有一个包含轻量级和带注释标记的存储库时,为什么每个ref的git不能正确地对标签排序?,git,sorting,Git,Sorting,当我有一个包含轻量级和带注释标记的存储库时,git for each ref似乎只对其中一个集合进行排序。我想为每个ref修改我对的调用,以获得对所有标记进行排序并将它们混合在输出中的输出 例如: bash-3.2$ git tag | > xargs -I T git log -n 1 --format='%at T' T | > sort -rn | > awk '{print $2}' lwt3 at3 lwt2 at2 lwt1 at1 bash-3.2$ git for-each-
git for each ref
似乎只对其中一个集合进行排序。我想为每个ref修改我对的调用
,以获得对所有标记进行排序并将它们混合在输出中的输出
例如:
bash-3.2$ git tag |
> xargs -I T git log -n 1 --format='%at T' T |
> sort -rn |
> awk '{print $2}'
lwt3
at3
lwt2
at2
lwt1
at1
bash-3.2$ git for-each-ref --sort=-authordate refs/tags | awk '{print $3}'
refs/tags/lwt3
refs/tags/lwt2
refs/tags/lwt1
refs/tags/at1
refs/tags/at2
refs/tags/at3
bash-3.2$ git --version
git version 1.6.6.80.g2df32
bash-3.2$git标签|
>xargs-itgit日志-n1--格式='%at T'T|
>排序-rn|
>awk“{print$2}”
lwt3
三点
lwt2
两点钟
lwt1
at1
bash-3.2$git for each ref--sort=-authordate refs/tags | awk'{print$3}'
参考/标签/lwt3
参考/标签/lwt2
参考/标签/lwt1
参考文献/标签/at1
参考文献/标签/at2
参考文献/标签/at3
bash-3.2$git——版本
git版本1.6.6.80.g2df32
使用-committerdate
或-taggerdate
会生成类似的输出,并且标记永远不会正确排序。当使用-*authordate
或-*committerdate
时,被排序的组被反转,而-*taggerdate
不排序
还有其他我不知道的选择吗?这是正确的行为吗?我明白了为什么committerdate或taggerdate只会分别对提交或标记进行排序,但似乎authordate应该做我想做的事情。好的,继续验证我在评论中所说的: 只有带注释的标记才能在存储库中创建选项卡对象,其中包含您试图在此处排序的taggerdate字段。您的标记很可能是轻量级标记,因此不包含此类信息
对于另一半,committerdate和authordate在标记上对我来说似乎工作正常——它们只是对标记指向的提交进行排序,因为没有关于标记本身是何时创建的信息。(当且仅当您在前面加一个-时,它们会反转排序)根据提交日期,将带注释的标记和轻量级标记一起排序,我使用:
git for-each-ref --format='%(*committerdate:raw)%(committerdate:raw) %(refname) %(*objectname) %(objectname)' refs/tags | \
sort -n | awk '{ print $4, $3; }'
此命令将按时间顺序列出每个标记和关联的提交对象id。是否
-
指示您希望反转排序?对于标签问题,有问题的标签是带注释的标签吗?如果没有,我想那里就没有日期可供排序了。一半的标签都有注释(at1、at2、at3)。标记lw1、lw2和lw3是轻量级(非注释)标记。