GitHub v3 API:如何为我闪亮的新存储库创建初始提交?

时间:2012-03-12 16:08:09

标签: git api github github-api

GitHub API文档说:

Git DB API functions will return a 409 if the git repo for a Repository is empty or unavailable.

POST $repo/git/trees确实返回409。

如何在存储库中创建初始提交呢?我是否必须强制用户手动提交一些无用的垃圾,只是为了创建root提交?

3 个答案:

答案 0 :(得分:6)

我通过电子邮件向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.

作为一种解决方法,根据您的使用情况,您可以创建分叉而不是新的回购。

答案 1 :(得分:6)

2012年9月28日更新

根据github博客上发布的this blogpost,现在可以在创建后自动初始化存储库。

  

今天我们通过使用更简单的方式将提交添加到存储库   GitHub API。到目前为止,您可以创建一个存储库,但是您可以   需要在添加任何内容之前通过您的Git客户端在本地初始化它   通过API提交。

     

现在,您可以选择在通过发送创建存储库时初始化存储库   如果为auto_init参数,则为true:

 curl -i -u pengwynn \
      -d '{"name": "create-repo-test", "auto_init": true}' \
      https://api.github.com/user/repos 
  

生成的存储库将具有README存根和初始提交。

答案 2 :(得分:0)

2021 年 7 月 8 日更新

我遇到了类似的问题 - 我正在开发一个可以与 GitHub 集成的 Web 应用程序。在应用程序的流程中,用户可以添加指向 GitHub 存储库的链接,然后提交文件并将其推送到远程 GitHub 存储库。我为此使用 GitHub v3 API。

问题是提交一个文件,需要做一串请求:

  1. 从存储库中获取现有文件树
GET https://api.github.com/repos/USER/REPO/git/commits/COMMIT_SHA
  1. 创建新的文件树
  2. 创建提交

对于第 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);

例如,以下请求将在名为“main”的分支中创建内容为“123”的 test.js 文件和提交的消息“test”。

PUT https://api.github.com/repos/USER/REPO/contents/test.js

{
  "branch": "main",
  "message": "test",
  "content": "MTIz"
}
相关问题