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

dwthyt8l  于 2023-01-28  发布在  Git
关注(0)|答案(8)|浏览(174)

我想得到remotegit repo的最后一个提交ID。
命令git rev-parse HEAD适用于本地克隆的git repo,但我想通过CURL命令从原始GIT repo中获取它。
例如:我想获取git URL https://git.appfactorypreview.wso2.com/history/apiapp.git/的最后一个提交ID。
怎么做?

alen0pnh

alen0pnh1#

尝试以下命令

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

dm7nw8vv2#

我觉得你想要的是:

git ls-remote $URL HEAD

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

git ls-remote $URL refs/heads/master

注意,在第一个例子中,HEAD将指向仓库中要 checkout 的默认分支,您需要确保这是您想要的分支,或者使用第二种形式并指定您想要的分支(将refs/heads/master替换为您想要的分支的名称:refs/heads/BRANCH_NAME.

8yparm6h

8yparm6h3#

另一种方法,不使用git log:
git rev-parse HEAD

8ljdwjyq

8ljdwjyq4#

你可以用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
hc2pp10m

hc2pp10m5#

最后一个提交id的短哈希更易于阅读(读作:对于后代,有两种方法来获得最后提交id的短散列:

git rev-parse --short HEAD

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

gg0vcinb6#

我使用的最简单方法:

git rev-parse origin/develop
gab6jxml

gab6jxml7#

我的回答对OP没有帮助,因为他不在github上,但我想我还是会提到它,因为它使用了OP要求的curlwget
wget -qO- http://api.github.com/repos/Ghini/ghini.desktop/commits/ghini-1.0
Ghini是我的repo,ghini.desktop是我的repository,ghini-1.0是我感兴趣的分支。替换它们以适合您的情况。
JSON的答案是一个字典,OP对它的sha字段感兴趣,但它包含了更多的信息。

fiei3ece

fiei3ece8#

git fetch; git rev-parse origin/branch_name
为安全起见,请先运行git fetch

相关问题