我想获取 remote git 存储库的最后一次提交 ID。
命令
git rev-parse HEAD
适用于本地克隆的 git 存储库,但我想通过 CURL 命令等从原始 GIT 存储库获取它。
例如:我想获取 git URL 的最后一次提交 ID https://git.appfactorypreview.wso2.com/history/apiapp.git/.
如何?
尝试这个命令
git log --format="%H" -n 1
另一种方法,不使用 git log:
git rev-parse HEAD
我想你想要的是这样的:
git ls-remote $URL HEAD
如果远程存储库中不存在
HEAD
,那么您可能需要:
git ls-remote $URL refs/heads/master
请注意,在第一个实例中,
HEAD
将指向要在存储库中签出的默认分支。您需要确保这是您想要的分支,或者只需使用第二种形式并指定您想要的分支(将 refs/heads/master
替换为您想要的分支的名称:refs/heads/BRANCH_NAME
。
您可以使用
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
最后一次提交 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
我使用的最简单的方法:
git rev-parse origin/develop
我的回答对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
字段感兴趣,但它包含更多信息。
git fetch; git rev-parse origin/branch_name
为了安全起见,先跑
git fetch
。
到目前为止,这里的答案都不正确。
问题是“如何获取远程 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 分支?