我正在使用v3 API并设法列出repos / trees / branches,访问文件内容以及创建blob / trees / commit。我现在正在尝试创建一个新的repo,并设法用“POST user / repos”
来完成但是当我尝试在这个新的repo中创建blob / trees / commits / references时,我得到了相同的错误消息。 (409)“Git Repository是空的。”显然,我可以通过git命令行自己启动存储库,但是如果我的应用程序为我做了它,那就更愿意了。
有办法吗?在创建空存储库后,我需要通过API做的第一件事是什么?
由于
答案 0 :(得分:2)
自2012年起,根据GitHub博客上发布的this blog post,现在可以在创建后自动初始化存储库:
今天,我们通过GitHub API更轻松地将提交添加到存储库。到目前为止,您可以创建一个存储库,但在通过API添加任何提交之前,您需要通过Git客户端在本地初始化它。
现在,您可以选择通过为auto_init参数发送true来初始化存储库:
curl -i -u pengwynn \ -d '{"name": "create-repo-test", "auto_init": true}' \ https://api.github.com/user/repos
生成的存储库将具有README存根和初始提交。
答案 1 :(得分:1)
2013年5月更新:请注意,repository content API现在授权adding files。
请参阅“File CRUD and repository statistics now available in the API”。
原始答案(2012年5月)
由于它似乎尚不支持(“GitHub v3 API: How to create initial commit for my shiny new repository?”,如aclark条评论),您可以先推送初始空提交强>
git commit --allow-empty -m 'Initial commit'
git push origin master
无论如何,这对initialize one's repository来说是一个好习惯 它在“git's semi-secret empty tree”中有说明。
答案 2 :(得分:1)
如果您要创建空初始提交(即没有任何文件的初始提交),可以执行以下操作:
auto_init
选项创建存储库; 或,如果存储库已经存在,请使用the create file endpoint创建一个虚拟文件-这将创建分支:PUT https://api.github.com/repos/USER/REPO/contents/dummy { "branch": "master", "message": "Create a dummy file for the sake of creating a branch", "content": "ZHVtbXk=" }
这将为您提供包括提交SHA在内的大量数据,但是由于我们将删除该提交,因此您可以丢弃所有数据。
POST https://api.github.com/repos/USER/REPO/git/commits { "message": "Initial commit", "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904" }
这一次,您需要记下返回的提交SHA。
PATCH https://api.github.com/repos/USER/REPO/git/refs/heads/master { "sha": "<the SHA of the commit>", "force": true }