无论分支如何,我都希望检索远程存储库上的最新提交哈希。
我已经尝试过git ls-remote <remote>,git ls-remote --tags <remote>但是这两个似乎都是按标签名称排序的,这无法找出哪个是最新的。
例如,在 Github 上,您可以转到 Insights / Network 并获得一个图表,其中包含所有分支和提交——但是,在该 gui 中工作显然并不理想——但数据应该以某种方式存在。
有没有办法从远程获取最新的提交哈希而不管分支?
您可以使用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)
这将列出每个远程分支的最后提交,其格式为日期在前,然后排序(按日期)并保留第一个
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)
| 归档时间: |
|
| 查看次数: |
4107 次 |
| 最近记录: |