如何使用 curl-like 命令获取远程回购的最后提交 ID?

我想得到 遥控器 git 回购的最后一个提交 ID。

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

例如: 我想得到 git URL https://git.appfactorypreview.wso2.com/history/apiapp.git/的最后一个提交 ID。

怎么做到的?

130830 次浏览

try this command

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

You can use git ls-remote for this. Because I get a 'Unauthorized access for repository apiapp.git' I use as example torvalds linux-repo.

$ git ls-remote --heads git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
6d15ee492809d38bd62237b6d0f6a81d4dd12d15        refs/heads/master

I think what you want is this:

git ls-remote $URL HEAD

If HEAD doesn't exist in the remote repository, then you likely want:

git ls-remote $URL refs/heads/master

Note that in the first instance, HEAD is going to point to the default branch to checkout in the repository. You need to be sure that's the branch you want, or just use the second form and specify the one you want (replace refs/heads/master with the name of the branch you want: refs/heads/BRANCH_NAME.

my answer would not help the OP because he's not on github, but I think I would mention it anyway because it uses curl, or wget, as the OP requested.

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

Ghini is my repo, ghini.desktop is my repository, ghini-1.0 is the branch I'm interested in. Replace them to fit your case.

the JSON answer is a dictionary, and the OP was interested in its sha field, but it contains a lot more information.

Another way, without using git log:

git rev-parse HEAD

Simplest way I use:

git rev-parse origin/develop

The short hash of the last commit id is much more human readable (read: user friendly). For posterity, two ways to get the short hash of the last commit id:

git rev-parse --short HEAD

OR

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