通过github API进行命令时设置分支

时间:2014-04-03 02:33:18

标签: ruby git github-api

我正在使用ruby interfacegithub API将内容从ruby app推送到github。一切正常,但我似乎无法找到如何在使用Github API时指定分支。

github = Github.new :oauth_token => 'MYPERSONALACCESSTOKEN'
blobs = github.git_data.blobs.create 'whoisstan', 'test_for_github_api', content: 'Sample', encoding: 'utf-8'

trees = github.git_data.trees.create 'whoisstan', 'test_for_github_api',
    "tree" => [
      {
        "path" => "file.rb",
        "mode" => "100644",
        "type" => "blob",
        "sha" =>  blobs.body['sha']
      }
    ]
commits = github.git_data.commits.create 'whoisstan', 'test_for_github_api', :tree => trees.body['sha'], :message => 'new version', :parents => nil

同样奇怪的是,内容在网站上没有链接,我只能在使用响应的html_url时才能看到它。

https://github.com/whoisstan/test_for_github_api/commit/f349a436e2fdbffddfc6715490da7282160798fe

看起来可疑的是提交父级似乎为空。此外,不会触发post commit钩子。如何指定分支并让内容在github网站中正确显示?

1 个答案:

答案 0 :(得分:1)

https://developer.github.com/v3/git/处的文档解释了向特定分支添加提交的过程。您需要做的事情不同:

  • 将提交的父级设置为指向您正在创建此提交的上一次提交
  • 修改要更新的分支的引用,使其指向创建的提交

Git Data API是一个低级API,可用于blob,树,提交和引用。在某些情况下,您需要这种灵活性来实现应用程序的目标。在其他情况下,您可以考虑使用更高级别的API,例如Repo Contents API,它可以处理文件(并在幕后创建所有必需的Git对象)