如何在Java中获取GitHub提交的SHA?

时间:2013-07-15 21:09:52

标签: java git github

我想知道是否有一个hacky方法来获取Java中特定GitHub存储库中最新提交分支的提交SHA。据我所知,GitHub API只有一个钩子来访问完整的提交信息,而不仅仅是API。有人有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

按照cjc343:

的建议使用refs api
GET /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