GitHub API 文档说:
Git DB API functions will return a 409 if the git repo for a Repository is empty or unavailable.
我POST
的 on$repo/git/trees
确实返回 409。
那么如何在存储库中创建初始提交?为了创建根提交,我是否必须强制用户手动提交一些无用的垃圾?
GitHub API 文档说:
Git DB API functions will return a 409 if the git repo for a Repository is empty or unavailable.
我POST
的 on$repo/git/trees
确实返回 409。
那么如何在存储库中创建初始提交?为了创建根提交,我是否必须强制用户手动提交一些无用的垃圾?
2012 年 9 月 28 日更新
根据github博客上发布的这篇博文,现在可以在创建后自动初始化存储库。
今天,我们让通过 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 存根和一个初始提交。
我通过电子邮件向 github 支持发送了同样的问题,这是他们的回复:
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
对于第 1 步,您需要知道如果存储库完全为空,则该提交的 sha 不存在。
如果 repo 为空且不包含任何文件,您可以像这样添加文件(使用此 API,您可以添加没有提交 sha 的文件):
PUT https://api.github.com/repos/USER/REPO/contents/YOUR_FILE_NAME
{
"branch": "BRANCH_NAME",
"message": "COMMIT_MESSAGE",
"content": "ENCODED_FILE_CONTENT"
}
ENCODED_FILE_CONTENT 可以通过btoa
JS 函数获取,如下所示:
var encodedFileContent = btoa(fileString);
例如,以下请求将test.js
在名称为“main”的分支中创建内容为“123”的文件和提交的消息“test”。
PUT https://api.github.com/repos/USER/REPO/contents/test.js
{
"branch": "main",
"message": "test",
"content": "MTIz"
}