我想知道是否有一个hacky方法来获取Java中特定GitHub存储库中最新提交分支的提交SHA。据我所知,GitHub API只有一个钩子来访问完整的提交信息,而不仅仅是API。有人有办法做到这一点吗?
答案 0 :(得分:2)
按照cjc343:
的建议使用refs apiGET /repos/:owner/:repo/git/refs/:ref
例如:
$ curl https://api.github.com/repos/twitter/bootstrap/git/refs/heads/master
{
"ref": "refs/heads/master",
"url": "https://api.github.com/repos/twitter/bootstrap/git/refs/heads/master",
"object": {
"sha": "d991ef2ab1b4d156c7e5d33d052d66f8eaafc460",
"type": "commit",
"url": "https://api.github.com/repos/twitter/bootstrap/git/commits>/d991ef2ab1b4d156c7e5d33d052d66f8eaafc460"
}
}
您可以在将其解析为JSON之后提取object.sha
,或者以“hacky”的精神,通过以下方式提取:{/ p>
| grep \"sha\": | cut -f4 -d\"
得到:
d991ef2ab1b4d156c7e5d33d052d66f8eaafc460
答案 1 :(得分:0)
这可能不是你想要的(没有Java)。但是,使用java based ssh-api和以下命令可以实现此目的。
git ls-remote git@github.com:<github username>/<git project name>.git
以下是示例输出:
4de51ba41fba357ac9ce63f098451cd1fc2dacbe HEAD
4de51ba41fba357ac9ce63f098451cd1fc2dacbe refs/heads/master
cc42dc12a972dab122030b046440f47e0485e321 refs/pull/1/head
73629fe86def6fef896abd32637b97fddf8cd3b4 refs/pull/1/merge
您当然可以通过在上述命令末尾附加所需的分支名称或HEAD来过滤此内容。
git ls-remote git@github.com:<github username>/<git project name>.git <branch-name>
OR
git ls-remote git@github.com:<github username>/<git project name>.git HEAD