如何使用类似curl的命令获取远程仓库的最后一个提交ID?

时间:2013-10-04 08:11:19

标签: git git-commit

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

命令git rev-parse HEAD适用于本地克隆的git repo,但我希望通过CURL命令从原始的GIT repo中获取它。

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

如何?

7 个答案:

答案 0 :(得分:76)

尝试此命令

git log --format="%H" -n 1

答案 1 :(得分:28)

我认为你想要的是:

git ls-remote $URL HEAD

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

git ls-remote $URL refs/heads/master

请注意,在第一个实例中,HEAD将指向要在存储库中签出的默认分支。您需要确定这是您想要的分支,或者只需使用第二个表单并指定所需的分支(将refs/heads/master替换为您想要的分支名称:refs/heads/BRANCH_NAME

答案 2 :(得分:11)

您可以使用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

答案 3 :(得分:5)

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

git rev-parse --short HEAD

git log -n1 --format="%h"

答案 4 :(得分:4)

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

git rev-parse HEAD

答案 5 :(得分:2)

我使用的最简单方法:

git rev-parse origin/develop

答案 6 :(得分:1)

我的答案对OP没有帮助,因为他不在github上,但我想我会提到它,因为它使用curlwget作为OP请求。< / p>

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

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

JSON答案是字典,OP对其sha字段感兴趣,但它包含更多信息。