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


Answers:


118

试试这个命令

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

8
您可以通过执行以下操作删除管道git log --format="%H" -n 1
gMale

15
git log -n1 --format="%h"将提供缩写的提交哈希。
starlocke

4
错了 在git 2.1.4中,“%H”显示本地提交ID,而不是远程。
John Eikenberry

1
您在哪里指定了远程URL?
陈鼎一

2
该问题确实已修改,但仅出于可读性。OP明确表示他没有本地克隆,他想使用类似curl的解决方案。
mariotomo

35

我认为您想要的是:

git ls-remote $URL HEAD

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

git ls-remote $URL refs/heads/master

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


您不能使用HEAD,因为它是当前分支的指针。但是在裸仓库中不存在HEAD
silvio

1
这不是真的,它永远存在。案例和重点:git ls-remote git://github.com/jszakmeister/vimfiles.git HEAD。在裸仓库中,它告诉Git将哪个分支作为默认分支签出。的确,您不能指望它的存在。因此,在这种情况下,您应该使用适当的refname。我将更新我的答案。
John Szakmeister


14

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

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

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

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

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


谢谢,这对我很有帮助。看看这个:) gist.github.com/AiyionPrime/…–
Aiyion.Prime
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.