通过克隆,我可以找到 git 存储库的 HEAD 并使用 HEAD,我可以使用 Egit 中的以下代码在 GITHUB 中找到修订 ID:- ObjectId revId = repository.resolve(Constants.HEAD); 我如何在不克隆整个存储库的情况下找到这个修订 ID,只知道我的 GITHub 存储库的 url,因为克隆整个存储库需要时间。请建议。
3 回答
从任何目录,您可以使用git ls-remote
:
C:\Users\VonC\>git ls-remote https://github.com/git/git master
e230c568c4b9a991e3175e5f65171a566fd8e39c refs/heads/master
4b5eac7f03f411f75087e0b6db23caa999624304 refs/remotes/github/master
4b5eac7f03f411f75087e0b6db23caa999624304 refs/remotes/origin/master
C:\Users\VonC\>git ls-remote https://github.com/git/git HEAD
e230c568c4b9a991e3175e5f65171a566fd8e39c HEAD
4b5eac7f03f411f75087e0b6db23caa999624304 refs/remotes/origin/HEAD
您可以通过这种方式看到 refspecs 的 SHA1,包括您感兴趣的 ref。
上面的示例列出了 refspecs 的 SHA1,包括 ' master
' 或 ' HEAD
'
您可以看到HEAD
repo 'git' 是 4b5eac7... 并且它对应于heads/master
(这意味着该远程 repo 的 HEAD 是master
分支)
该命令无需克隆即可工作。
你在谈论提交哈希吗?
您可以在“提交”页面上轻松查看它。
AutoFixture 示例:https ://github.com/AutoFixture/AutoFixture/commits/master
如您所见,每个提交在右侧都有其哈希值。master 的 HEAD 的哈希是cdc59a9a4889504d882aaa47b222a0410174d917
. 因为HEAD^
它是ab05261e1d175d93f11ed37020f802933a20789c
等等。
您可以从 GitHub API 获取此信息。
API 提供了一个端点来获取存储库的所有提交。在您的情况下,您可以只获取相关分支上的最新提交。例如,此 curl 请求从存储库的master
分支中获取最近的提交。rails/rails
curl "https://api.github.com/repos/rails/rails/commits?sha=master&per_page=1"
[
{
"sha": "c52a4ae565671e3a3b1513a285dc887102d5eb15",
"commit": {
"author": {
"name": "Santiago Pastorino",
"email": "santiago@wyeworks.com",
"date": "2013-09-03T15:18:41Z"
},
"committer": {
"name": "Santiago Pastorino",
"email": "santiago@wyeworks.com",
"date": "2013-09-03T15:18:41Z"
},
"message": "Revert \"Merge pull request #12085 from valk/master\"\n\nThis reverts commit 15455d76c8d33b3767a61e0cdd2de0ff592098ef, reversing\nchanges made to ffa56f73d5ae98fe0b8b6dd2ca6f0dffac9d9217.",
// ...
}
]
在这个例子中,我们看到这c52a4ae565671e3a3b1513a285dc887102d5eb15
是最近的提交。请注意,我们在 Web UI 中看到了相同的信息: