GitHub API文档指出:
如果Repository的Git repo为空或不可用,则Git DB API函数将返回409。
我的POST
到$repo/git/trees
确实返回了409。
那么我该如何在仓库中创建初始提交呢?我是否必须强制用户手动提交一些无用的垃圾,只为了创建根提交?
GitHub API文档指出:
如果Repository的Git repo为空或不可用,则Git DB API函数将返回409。
我的POST
到$repo/git/trees
确实返回了409。
那么我该如何在仓库中创建初始提交呢?我是否必须强制用户手动提交一些无用的垃圾,只为了创建根提交?
更新于2012年9月28日
根据GitHub博客上这篇文章的说法,现在可以在创建后自动初始化存储库了。
今天,我们通过GitHub API更容易地向存储库添加提交。直到现在,您可以创建一个存储库,但是您需要通过Git客户端在本地初始化它,然后才能通过API添加任何提交。
现在,您可以选择在创建存储库时发送true以进行自动初始化:
curl -i -u pengwynn \
-d '{"name": "create-repo-test", "auto_init": true}' \
https://api.github.com/user/repos
From: Rick (GitHub Staff)
Subject: Creating an initial commit using the v3 API
Currently, you can't add the initial commit through the API. Thanks for the
feedback. I've added your suggestion to the Feature Request List™ for the team
to see.
作为一种解决方法,根据您的使用情况,您可以创建分支而不是新的仓库。
2021年7月8日更新
我遇到了一个类似的问题 - 我正在开发一个可以与GitHub集成的Web应用程序。在应用程序的流程中,用户可以添加指向GitHub存储库的链接,然后将文件提交并推送到远程GitHub存储库中。我使用GitHub v3 API来实现这一点。
问题是要提交一个文件,你需要进行一系列的请求:
GET https://api.github.com/repos/USER/REPO/git/commits/COMMIT_SHA
对于第一步,您需要知道一个提交的sha,如果存储库完全为空,则不存在该sha。
如果存储库为空且不包含任何文件,则可以使用以下方式添加文件(使用此API可以在没有提交sha的情况下添加文件):
PUT https://api.github.com/repos/USER/REPO/contents/YOUR_FILE_NAME
{
"branch": "BRANCH_NAME",
"message": "COMMIT_MESSAGE",
"content": "ENCODED_FILE_CONTENT"
}
可以使用btoa
JS函数获取ENCODED_FILE_CONTENT
,如下所示:
var encodedFileContent = btoa(fileString);
test.js
文件。PUT https://api.github.com/repos/USER/REPO/contents/test.js
{
"branch": "main",
"message": "test",
"content": "MTIz"
}
git commit
。 - SLaks