87

我想获取远程git repo 的最后提交 ID。

该命令git rev-parse HEAD适用于本地克隆的 git 存储库,但我想通过 CURL 命令左右从原始 GIT 存储库中获取它。

例如:我想获取 git URL https://git.appfactorypreview.wso2.com/history/apiapp.git/的最后提交 ID 。

如何?

4

7 回答 7

138

试试这个命令

git log --format="%H" -n 1
于 2013-10-04T08:26:31.357 回答
48

我想你想要的是这样的:

git ls-remote $URL HEAD

如果HEAD远程存储库中不存在,那么您可能需要:

git ls-remote $URL refs/heads/master

请注意,在第一种情况下,HEAD将指向默认分支以在存储库中签出。您需要确保这是您想要的分支,或者只使用第二种形式并指定您想要的分支(替换refs/heads/master为您想要的分支的名称:refs/heads/BRANCH_NAME.

于 2013-10-04T08:33:10.983 回答
45

另一种方法,不使用 git log:

git rev-parse HEAD

于 2018-11-29T14:34:39.783 回答
16

你可以用git ls-remote这个。因为我得到了一个'Unauthorized access for repository apiapp.git'我使用的例子 torvalds linux-repo。

$ git ls-remote --heads git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
6d15ee492809d38bd62237b6d0f6a81d4dd12d15        refs/heads/master
于 2013-10-04T08:32:53.957 回答
8

最后一个提交 id 的短散列更易于人类阅读(阅读:用户友好)。对于后代,有两种方法可以获取最后一个提交 id 的短哈希:

git rev-parse --short HEAD

或者

git log -n1 --format="%h"
于 2021-01-17T04:19:14.230 回答
6

我使用的最简单的方法:

git rev-parse origin/develop
于 2019-09-19T10:54:24.437 回答
3

我的回答对 OP 没有帮助,因为他不在 github 上,但我想我还是会提到它,因为它使用curl, or wget,正如 OP 所要求的那样。

wget -qO- http://api.github.com/repos/Ghini/ghini.desktop/commits/ghini-1.0

Ghinighini.desktop我的存储库,是我的存储库,ghini-1.0是我感兴趣的分支。替换它们以适合您的情况。

JSON 答案是一本字典,OP 对其sha领域很感兴趣,但它包含更多信息。

于 2018-01-04T14:31:13.283 回答