如何从远程获取最新的提交哈希?

cbl*_*bll 4 git

无论分支如何,我都希望检索远程存储库上的最新提交哈希。

我已经尝试过git ls-remote <remote>git ls-remote --tags <remote>但是这两个似乎都是按标签名称排序的,这无法找出哪个是最新的。

例如,在 Github 上,您可以转到 Insights / Network 并获得一个图表,其中包含所有分支和提交——但是,在该 gui 中工作显然并不理想——但数据应该以某种方式存在。

有没有办法从远程获取最新的提交哈希而不管分支?

pad*_*win 7

您可以使用git show遥控器:

git show origin/master
Run Code Online (Sandbox Code Playgroud)

将向您显示最后一次提交origin/master

编辑:为了获得“绝对”最新提交,我会做一些类似的事情:

git log -n 1 $(git branch -r)
Run Code Online (Sandbox Code Playgroud)

这将记录所有远程分支 ( git branch -r)。但只会保留第一个提交 ( -n 1)。

我不太确定时间顺序,但在我的仓库中似乎给了我最新的。

另一种选择,更像“oneliner-like”是:

git show -s --pretty='format:%ci %s %h' $(git branch -r) | sort -r | head -n 1
Run Code Online (Sandbox Code Playgroud)

这将列出每个远程分支的最后提交,其格式为日期在前,然后排序(按日期)并保留第一个


Mar*_*cus 5

git 的最新版本(不知道哪个 - 2.14 没有,2.21 有)允许在 ls-remote 中使用“--sort”选项。你可以很容易地做到:

git ls-remote --sort=committerdate
Run Code Online (Sandbox Code Playgroud)

但请注意 - 如果需要查看对象以实现排序(如上例所示),则对象必须在本地可用。否则,您将收到错误消息“致命:缺少对象”。因此,请确保git fetch在使用之前始终执行 a 。

老实说 - 由于您必须确保在能够使用它之前在本地获取所有远程分支,所以这并不比简单地git branch -r --sort=committerdate在获取之后执行好多少。唯一明显的区别是 ls-remote 直接显示您正在搜索的提交哈希,而使用 git branch 您必须像这样包装到 git rev-parse 中:

git rev-parse `git branch -r --sort=committerdate | tail -1`
Run Code Online (Sandbox Code Playgroud)