Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么每个ref的git不能正确地对标签排序?_Git_Sorting - Fatal编程技术网

为什么每个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是轻量级(非注释)标记。