git ls-remote --tags:如何获取日期信息?

2024-03-26

我在用git ls-remote --tags <url>从存储库获取标签。但是,它不提供任何日期信息。所以我想知道是否有任何方法可以获取带有日期信息的标签,而无需克隆整个存储库。我已经检查了 git ls-remote文件 https://git-scm.com/docs/git-ls-remote.html,但我找不到任何有用的信息。
我试过git ls-remote --tags https://github.com/shopify/sarama,我得到:

2ed98903c79815c54f80ab06167a74755e74348c        refs/tags/v1.0.0
3b6fa677e9395c3d7151999974d1b5b36f6ac091        refs/tags/v1.1.0
9bb4a68d57ff6f623363aa172f0a8297aa289ba7        refs/tags/v1.10.0
bd61cae2be85fa6ff40eb23dcdd24567967ac2ae        refs/tags/v1.10.1
0fb560e5f7fbcaee2f75e3c34174320709f69944        refs/tags/v1.11.0
c01858abb625b73a3af51d0798e4ad42c8147093        refs/tags/v1.12.0
bbdbe644099b7fdc8327d5cc69c030945188b2e9        refs/tags/v1.13.0
240fd146ce68bcafb034cc5dc977229ffbafa8ea        refs/tags/v1.14.0
3b1b38866a79f06deddf0487d5c27ba0697ccd65        refs/tags/v1.15.0
f7be6aa2bc7b2e38edf816b08b582782194a1c02        refs/tags/v1.16.0
35324cf48e33d8260e1c7c18854465a904ade249        refs/tags/v1.17.0
a6144ae922fd99dd0ea5046c8137acfb7fab0914        refs/tags/v1.18.0
ec843464b50d4c8b56403ec9d589cf41ea30e722        refs/tags/v1.19.0
fcf765a8b80c7b3a5ba1cb3bb9036261502b1ee8        refs/tags/v1.2.0
...

显然,它们不是按日期排序的。任何人都可以解决这个问题吗?

根据下面 Vonc 的回答,我找到了一种获取按日期排序的标签信息的方法。首先,使用GraphQL 浏览器 https://docs.github.com/en/free-pro-team@latest/graphql/overview/explorer然后输入以下脚本:

query{
      repository(name: "snappy", owner: "golang") {
        refs(refPrefix: "refs/tags/", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}, last: 100) {
          nodes {
            name
            target {
              __typename
              ... on Tag {
                oid
                name
                tag_message: message
                tagger {
                  email
                  name
                }
                target {
                  oid
                }
              }
              ... on Commit {
                commit_message: message
              }
            }
          }
        }
      }
    }

然后,您可以获取按 commit_date DESC 排序的信息。另外,您可以将“DESC”更改为“ASC”以反转结果。我在我的邮递员中对此进行了测试,设置如下:
url: https://api.github.com/graphql https://api.github.com/graphql
方法:POST
header:授权:bearer(我的github令牌)
json_数据:

{
    "query": "query{repository(name: \"snappy\", owner: \"golang\") {refs(refPrefix: \"refs/tags/\", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}, last: 100) { nodes { name target { __typename ... on Tag { oid name tag_message: message tagger { email name } target { oid } } ... on Commit { commit_message: message}}}}}}"
    }

您可以获得的信息与您从 graphql explorer 获得的信息完全相同。


您可以使用的一种策略是进行临时签出并仅拉取提交对象(忽略 blob 和其余提交)。

git init repo
cd repo
git config extensions.partialClone true
git remote add origin https://github.com/shopify/sarama
time git fetch --filter=blob:none --tags --depth=1 origin
git tag -l | xargs -t -n1 git log --format=%cd

对于原始帖子中列出的存储库,克隆非常小(获取也花费了不到一秒的时间):

$ du -hs .
504K    .
$ git tag -l | xargs -t -n1 git log --format=%cd |& head -10
git log '--format=%cd' v1.0.0 
Tue Mar 17 13:48:54 2015 -0400
git log '--format=%cd' v1.1.0 
Fri Mar 20 19:21:21 2015 +0000
git log '--format=%cd' v1.10.0 
Tue Aug 2 08:43:06 2016 -0400
git log '--format=%cd' v1.10.1 
Tue Aug 30 09:25:53 2016 -0400
git log '--format=%cd' v1.11.0 
Tue Dec 20 13:06:16 2016 -0500
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git ls-remote --tags:如何获取日期信息? 的相关文章

  • 远程nodejs服务器部署永远

    我正在尝试通过提交后钩子在远程计算机上部署节点js服务器 该钩子将调用远程计算机上执行实际部署的脚本 我面临的问题是 如果我在计算机上运行远程脚本 它可以正常工作 但是当我尝试通过 ssh 命令执行相同的脚本时 服务器无法启动 这就是我的提
  • 如何将本地不同的 Git 分支推送到 Heroku/master

    Heroku 的政策是忽略除 master 之外的所有分支 虽然我确信 Heroku 的设计者对这个政策有很好的理由 我猜测是为了存储和性能优化 但对我作为开发人员来说 结果是无论我正在研究什么本地主题分支 我都想要一种简单的方法将 Her
  • 如何获取 TeamCity Build 触发器过滤器来构建功能分支而不是默认分支

    我创建了一个 Team City 构建来构建功能分支 默认分支 refs heads development 分支规范 refs heads feature 我有一个 vcs 触发器 因此它会为每次 git 推送而构建 但我不希望它在有人推
  • 管理 2 个以上具有依赖关系的 Nodejs 包的开发

    我正在开发 2 个 node js 包 每个包都在自己的 git 存储库中管理 包裹B取决于套餐A 所以我的本地目录结构如下所示 A1 B node modules A2 如果我更改本地代码A1 我想测试一下B在将其推送到公共存储库之前 我
  • github 存储库的本地缓存?

    我们使用 github 来管理我们的大量软件环境 我敢打赌 像许多其他组织一样 该存储库的绝大多数流量来自我们的办公室 考虑到这一点 有没有一种方法可以构建给定 github 存储库的本地缓存 但仍然具有云版本的保护 我在缓存代理服务器的模
  • 是否可以在 gitk 中配置 diff ?

    当单击 gitk 中的文件时 它将与该文件的先前版本进行比较 看起来这些文件是与 git diff 进行比较的 并且可以配置很少的参数 基本上是每个差异周围要查看的行数 上下文行 是否可以以某种方式进一步配置 gitk 的 diff 我希望
  • 推送时出现 git 错误 来自服务器的空回复

    我一直在尝试对现有存储库进行新的更改 但是 我不断收到以下错误 MacBook Pro spa git push origin master XX 的用户名 致命密码 无法访问 https github com XXXX https git
  • 如何修复 git 存储库中的“错误日期”问题?

    我最近尝试将存储库导入 GitHub 来自 Bitbucket 但导入失败 GitHub 技术支持通知我 他们在存储库中看到 错误日期 问题 我应该运行git fsck在存储库上 所以我从 BitBucket 克隆它并运行git fsck这
  • 重置远程跟踪分支

    如何将远程跟踪分支的分支指针重置为其之前的提交之一 这样看起来我没有拉动 类似于本地分支的硬重置 您可以使用以下命令设置对任何其他提交的引用 git update ref refs remotes origin master
  • 如何消除autocrlf造成的损害?

    我已经使用 git 并将 autocrlf 设置为 true 一段时间了 我一直通过 cygwin 与 git svn 一起使用它 这给我带来了很多问题 我明白了here https stackoverflow com questions
  • jgit - 基于文件扩展名的 git diff

    我正在使用 JGit API https www eclipse org jgit https www eclipse org jgit 访问 git 存储库 在 git 存储库中 我还存储 txt 文件和其他文件格式 我遇到了一个要求 我
  • 如何在使用 https 克隆后通过 SSH 访问 git 存储库?

    我有一个已经在我的计算机上克隆的存储库https 我想将此存储库设置为ssh这样我就不必每次 git push 时都输入用户名和密码 关于如何转换它的任何建议https将存储库克隆到ssh而不必实际重新克隆它 这样我就可以避免一直输入我的凭
  • 如何在 git tag 消息中包含换行符

    当我在 git 中标记版本化代码时 我喜欢在标记消息中使用项目符号点 这可以通过带注释的标签轻松完成 git tag a v1 0 0 Change number 1 Change number 2 Write a tag message
  • Git 术语:tip 和 HEAD 之间的区别?

    和Git有什么区别HEAD and tip 抱歉 如果在其他地方有人问过这个问题 没有看到任何其他关于此的问题 From 吉特词汇表 https git scm com docs gitglossary html 可能通过git help
  • 递归相对于 git rm -r [文件名] 意味着什么

    我正在学习一些 git 教程 但不明白运行之间的区别 git rm path to file and git rm r path to file 递归到底是什么意思 提前致谢 从 git rm 手册页 主目录名称 例如dir去除dir fi
  • 对于单个开发人员来说,是否值得从 SVN 转向 Git?

    自 2013 年起 此线程很可能已过时 当存储库主要由单个开发人员访问时 是否值得从 SVN 转到 GIT 我有几台用于开发的机器 主要不是用 C 开发 但我的存储库中混合了 VB VB Net PHP C C HTML Batch BAS
  • 无法使用 git 克隆任何存储库

    我尝试克隆一些存储库 但总是遇到相同的错误 我在哪里可以找到有关此错误的更多信息 错误日志文件或类似的文件 或者也许有人知道可能出了什么问题 git clone http github com creationix nvm git nvm
  • 将一些提交移至另一个分支

    我只有一个分支有 git repo A B C D E master 我想将提交 B C 和 D 拆分到另一个名为开发的分支 A E master B C D develop 做到这一点最简单的方法是什么 无需关心远程仓库 做cherry
  • 来自外部 .diff 文件的交互式补丁

    Linux 是否有命令或程序允许交互式地修补源代码 在屏幕上打印每个块并在将其应用到文件之前等待确认 就像是git add p 但是从另一个 diff 文件中进行更改 您始终可以在 shell ruby python 中编写脚本 逐行读取该
  • 有时 git 会在没有我要求的情况下将所有远程 git 分支作为本地分支进行跟踪。发生了什么?

    有时 git 会自发地 在某些但不是全部 拉取 或 克隆 操作期间 将存储库的所有远程分支复制到我的本地存储库中 甚至将它们全部设置为正确跟踪相应的远程分支 这是什么原因造成的 有什么办法可以让我故意这样做吗 如果您只是从远程分支执行普通分

随机推荐