git (ls-remote) - 列出按创建日期排序的“远程”分支

2023-12-23

我知道通过下面的 git 命令我可以列出我所有的“远程”分支......

[someone@someone-pc somerepo]$ git ls-remote
Username for 'https://somegit.com': someone
Password for 'https://[email protected] /cdn-cgi/l/email-protection': 
From https://somegit.com/somepath/somerepo.git
32b73a94a2ef1be27298a7bbf6670670c9ad4892        HEAD
99cfe797ee2f4cd3fc12ea1aef8dc4ea0f3538c7        refs/heads/a_branch
687332d5e82436d806fea2c22ac5e8772e73b33a        refs/heads/b_branch
b1d82987dd87b99c505282cbcdf1d4c4d36be2d2        refs/heads/c_branch
32d4a73e686524e50a92880ddbd744d1363834bb        refs/heads/d_branch
097ad2a9a69399996f7e1864436d483b2a85e3c1        refs/heads/e_branch
1e92bb0aa448a840e04928272759a3941774575b        refs/heads/f_branch
32b73a94a2ef1be27298a7bbf6670670c9ad4892        refs/heads/master

问题:有没有办法列出按创建日期排序的这些分支?

谢谢! =D


UPDATE:

为了说明这一点,我想要像 gitlab 分支列表这样排序的东西......


What git ls-remote所做的就是调用另一个 Git(您在上面看到的 URL 中的那个 Git)并询问它的引用:HEAD、分支名称、标签名称等。但它发送的唯一信息是这些名称和哈希 ID。

As I noted in comments above, each commit—represented by a hash ID, which is sort of the commit's true name—has two timestamps in it.1 To obtain either or both time stamp, you must have the commit. So this means git ls-remote is not sufficient in general: you might not have the commits whose hash IDs you get from the other Git.

你首先需要运行的是git fetch,它以相同的方式启动:它调用其他一些 Git 并从中获取它们的分支、标签等的列表,以及每个名称代表的哈希 ID。然后,对于他们的分支,您的 Git 将创建或更新您的远程跟踪名称: their master成为你的origin/master, 例如。他们的develop成为你的origin/develop。无论他们叫什么名字——refs/heads/*是完整的形式——你的 Git 创建或更新你自己的相应的refs/remotes/origin/*姓名。但在你的 Git 能够做到这一点之前,你的 Git 也必须获取提交本身,因此对于他们拥有但你没有的任何提交,你的 Git 需要的,你的 Git 都会获取这些提交。

您可能想要添加--prune (git fetch -p简而言之)指示您自己的 Git 删除您现在拥有的不再对应于其 Git 中的分支的任何远程跟踪名称。如果不这样做,您将永远保留过时的远程跟踪名称(或者直到您明确删除它们)。这其实不是harmful如此混乱。

现在您拥有了他们的所有提交,以及您自己尚未发送的提交。你也拥有他们的全部names,更改为您的远程跟踪名称。

You can view these branches with git branch -r. The default sort order for git branch is alphabetic-within-group.2 But you can give a --sort=key option:3

git branch -r --sort=authordate

or:

git branch -r --sort=committerdate

它将根据每个远程跟踪名称指向的提交中存储的相应时间戳进行排序。

Hence:

git fetch -p
git branch -r --sort=committerdate

应该能得到你想要的(除非你想要作者日期;见脚注 1)。

(旁白:我喜欢配置fetch.prune to true在我的每用户配置中,以便所有获取行为都像git fetch --prune总是。)


1The two timestamps are the author timestamp and the committer timestamp. In many cases, both hold the same date-and-time anyway. A new commit in general gets both the same, and then if you copy the commit to a new and improved one, via git commit --amend or git rebase or any of the many other ways that can do that, the new and improved commit has the old commit's author information, and you-and-now as the committer information.

2Technically, it's more ASCII-betic, or UTF-8-betic, than alphabetic: a digit comes before uppercase, and uppercase comes before lowercase.

3Your git branch needs to be new enough to have the --sort option, which was introduced to git branch in Git 2.7. If your Git is older, consider using git for-each-ref.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

git (ls-remote) - 列出按创建日期排序的“远程”分支 的相关文章

  • EGit(Eclipse git 插件)可以使用 SSH 密钥代替用户名和密码吗?

    我需要提交的 git 中央存储库是使用 SSH 密钥配置的 我的用户名是jmglov 但是当我执行 git 操作时 例如git clone 我使用这个配置 jmglov kitiara cat git config remote origi
  • 如何使用 sourceTree 进行推送?

    我正在使用 sourceTree 管理 Unity 项目 版本 4 6 3 我只是想返回到上一次提交 右键选择 将当前分支重置到此提交 在使用模式中选择 硬 然后放回上一次提交 之后 我尝试去推 但没有成功 抱歉 当时我忘记了错误 之后 我
  • 如何列出所有 GitHub 用户?

    我正在开发一个网站 需要从 GitHub 爬取所有用户信息 至少是我们网站上的用户 我搜索了 GitHub API 没有找到答案 那么我有什么办法可以完成这份工作吗 我只有用户的电子邮件 我可以通过将电子邮件哈希值与头像 URL 进行比较来
  • 如何将普通的 Git 存储库转换为裸存储库?

    如何将 普通 Git 存储库转换为裸存储库 主要区别似乎是 在普通的 Git 存储库中 你有一个 git存储库内的文件夹 包含构成工作副本的所有相关数据和所有其他文件 在裸露的 Git 存储库中 没有工作副本和文件夹 我们称之为repo g
  • Github 操作测试之前是否进行了包含特定单词的提交

    我需要确保使用 github 操作进行测试 如果之前已进行包含该单词的提交build 如果提交不包含单词build那么不应运行 github 操作的测试 你能给我一些建议吗 Test name Testing on push branche
  • 如何在Windows上分离“Git bash”中启动的“git gui”?

    例如 我开始 git bash 我导航到某个目录 I start git gui 我关闭控制台窗口或按 Ctrl C Git gui 的窗口消失了 即使我用过git gui disown 即使当我按 Ctrl C 时它不在前台 如何正确分离
  • git stash 删除最旧的存储(比如最旧的 5 个存储)

    如何在一个语句中删除最旧的存储 例如最旧的 5 个存储 而不是执行以下操作 git stash drop stash 3 git stash drop stash 4 git stash drop stash 5 git stash dro
  • 如何使用 GitHub API 一次检索多个用户?

    我能够获取单个用户 或自某个时间戳以来创建的所有用户 或者与 GitHub API 进行某些搜索匹配的位置 https developer github com v3 users get a single user https develo
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • 是否可以在 git 存储库之外添加和提交文件?

    我们的文本文件分布在系统的各个角落 我们计划将这些文件中所做的所有修改添加到 git 存储库中 每次对这些文件进行修改都是由脚本进行的 因此 我们计划向该脚本添加新命令 以将文件添加到 git 存储库 但是 这些修改是同时进行的 我们可以为
  • Git post-receive - 如何检查推送的分支是否与主分支合并

    在我们的团队中 我们通常将所有任务推送到单独的分支中 然后发布经理审查这些分支并将它们合并到 主 分支中 有时团队成员忘记将他们的分支与主分支合并 在推送之前 所以我想做的是 在用户推送后输出一条消息 请与主分支合并 我想我需要检查一些内容
  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • 您的分支比“origin/master”领先 3 个提交

    我在运行时收到以下信息git status Your branch is ahead of origin master by 3 commits 我读过其他一些帖子 解决这个问题的方法是运行git pull rebase但是 rebase
  • 从分叉存储库的 GitHub 操作发布评论的解决方法

    我需要在 GitHub 操作完成后向 GitHub 拉取请求发表评论 例如当 FOSS 社区成员提交 PR 时 我知道 当操作从分叉的存储库运行时 令牌没有对父存储库的写访问权限 因此它无法发布评论 人们是否为此找到了任何可行的解决方法 我
  • 如何生成类似github的影响图?

    是否有一些程序 或者我错过的一些神奇的 git 插件 可以从 git 存储库获取影响图或类似的东西 而无需通过 github 就数据收集而言 我可以生成图表 我不确定从哪里开始编写自己的代码 我假设有一些标志我可以传递给 git log 来
  • 如何关闭分支而不将其从 git 的历史记录中删除?

    我想提交并关闭其分支 而不将其从历史中删除 有了水银我会commit close branch then update转到上一个 然后继续工作 有了 git 我很困惑 没有与 Git 中关闭分支完全相同的方法 因为 Git 分支比 Merc
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • Jenkins GIT 包含从未构建过的区域

    我正在尝试使用包含区域在 Jenkins 中构建我的工作 但每当选中此选项时 民意调查结果总是说未检测到任何更改 我尝试了许多不同的路径 以及使用工作区进行 不进行强制轮询 结果是轮询从未检测到任何更改 但一旦我删除这些选项 它们就会在下一

随机推荐