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

问题描述 投票:0回答:9

我想获取 remote git 存储库的最后一次提交 ID。

命令

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

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

如何?

git git-commit
9个回答
158
投票

尝试这个命令

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

54
投票

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

git rev-parse HEAD


52
投票

我想你想要的是这样的:

git ls-remote $URL HEAD

如果远程存储库中不存在

HEAD
,那么您可能需要:

git ls-remote $URL refs/heads/master

请注意,在第一个实例中,

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


17
投票

您可以使用

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

14
投票

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

git rev-parse --short HEAD

为了获得短哈希,例如。

fb8a7de

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

为了获得完整的哈希值,例如。

fb8a7decf471abc61dc6e49616697d3bd722b96f

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

您可以在这里找到有关漂亮格式的更多信息https://git-scm.com/docs/pretty-formats


7
投票

我使用的最简单的方法:

git rev-parse origin/develop

4
投票

我的回答对OP没有帮助,因为他不在github上,但我想我还是会提到它,因为它按照OP的要求使用

curl
wget

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

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

JSON 答案是一本字典,OP 对其

sha
字段感兴趣,但它包含更多信息。


0
投票

git fetch; git rev-parse origin/branch_name

为了安全起见,先跑

git fetch


0
投票

到目前为止,这里的答案都不正确。

问题是“如何获取远程 git 存储库的最后一次提交 ID”。 但到目前为止,所有答案都只考虑了一个特定的分支,通常是当前签出的分支,或者列出了所有分支的最后提交。

如果您想检查存储库范围内的最后一次提交,我发现此命令很有帮助:

# make sure you got all commits in all branches
git fetch --all
git pull --all
# print last commit id
git log --branches --format="%H" -n 1

获取所有分支参考:如何获取所有 Git 分支?

© www.soinside.com 2019 - 2024. All rights reserved.