8

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を返します。

次に、リポジトリに初期コミットを作成するにはどうすればよいですか?ルートコミットを作成するためだけに、ユーザーに不要なジャンクを手動でコミットするように強制する必要がありますか?

4

3 に答える 3

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.

回避策として、ユースケースによっては、新しいリポジトリではなくフォークを作成できる場合があります。

于 2012-05-18T22:36:13.203 に答える
6

2012年9月28日更新

githubブログで公開されているこのブログ投稿によると、作成後にリポジトリを自動初期化できるようになりました。

本日、GitHubAPIを介してリポジトリにコミットを簡単に追加できるようになりました。これまではリポジトリを作成できましたが、APIを介してコミットを追加する前に、Gitクライアントを介してローカルでリポジトリを初期化する必要がありました。

auto_initパラメーターにtrueを送信することにより、リポジトリの作成時にオプションでリポジトリを初期化できるようになりました。

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

結果のリポジトリには、READMEスタブと初期コミットが含まれます。

于 2013-02-02T07:32:20.440 に答える
0

2021年7月8日更新

同様の問題に直面しています。GitHubと統合できるWebアプリに取り組んでいます。アプリのフローでは、ユーザーはGitHubリポジトリへのリンクを追加してから、ファイルをコミットしてリモートのGitHubリポジトリにプッシュできます。これにはGitHubv3APIを使用します。

問題はファイルをコミットすることです。リクエストのチェーンを作成する必要があります。

  1. リポジトリから既存のファイルツリーを取得します
GET https://api.github.com/repos/USER/REPO/git/commits/COMMIT_SHA
  1. 新しいファイルツリーを作成する
  2. コミットを作成する

ステップ1では、リポジトリが完全に空の場合に存在しないコミットのshaを知る必要があります。

リポジトリが空で、ファイルが含まれていない場合は、次のようにファイルを追加できます(このAPIを使用すると、commitのshaなしでファイルを追加できます)。

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

{
  "branch": "BRANCH_NAME",
  "message": "COMMIT_MESSAGE",
  "content": "ENCODED_FILE_CONTENT"
}

btoaENCODED_FILE_CONTENTは、次のようにJS関数で取得できます。

var encodedFileContent = btoa(fileString);

たとえば、次のリクエストはtest.js、コンテンツが「123」のファイルを作成し、ブランチに「main」という名前のコミットのメッセージ「test」を作成します。

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

{
  "branch": "main",
  "message": "test",
  "content": "MTIz"
}
于 2021-07-08T16:26:21.267 に答える