10

私は v3 API を使用しており、リポジトリ/ツリー/ブランチの一覧表示、ファイル コンテンツへのアクセス、ブロブ/ツリー/コミットの作成を管理しています。私は今、新しいレポを作成しようとしていますが、「POST user/repos」でそれを行うことができました

しかし、この新しいリポジトリで blob/trees/commits/references を作成しようとすると、同じエラー メッセージが表示されます。(409) 「Git リポジトリが空です。」. もちろん、git コマンド ラインを使用して自分でリポジトリを初期化することもできますが、むしろアプリケーションがそれを行ってくれることを望みます。

それを行う方法はありますか?空のリポジトリを作成した後、API を使用して最初に行う必要があることは何ですか?

ありがとう

4

3 に答える 3

2

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

本日、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-02T08:46:44.867 に答える
1

2013 年 5 月の更新:リポジトリ コンテンツ APIがファイルの追加を承認するようになったことに注意してください。

ファイル CRUD とリポジトリ統計が API で利用可能になりました」を参照してください。


元の回答 (2012 年 5 月)

まだサポートされていないようなので (「GitHub v3 API: 私の光沢のある新しいリポジトリの初期コミットを作成する方法は?」、aclark のコメントとして)、最初の空のコミットをプッシュすることから始めることができます。

git commit --allow-empty -m 'Initial commit'
git push origin master

いずれにせよ、これは自分のリポジトリを初期化するための良い習慣になる可能性があります。
そして、それは「git の半秘密の空のツリー」に示されています。

于 2012-05-29T20:15:30.570 に答える
1

の初期コミット (つまり、ファイルのないコミット)を作成する場合は、次のようにします。

  1. auto_initJai Pandya の回答のように、オプションを使用してリポジトリを作成します。または、リポジトリが既に存在する場合は、create file エンドポイントを使用してダミー ファイルを作成します。これにより、ブランチが作成されます。
PUT https://api.github.com/repos/USER/REPO/contents/dummy

{
  "ブランチ": "マスター",
  "message": "ブランチを作成するためのダミー ファイルを作成します",
  "コンテンツ": "ZHVtbXk="
}

これにより、コミット SHA を含む一連のデータが得られますが、そのコミットを消去しようとしているため、すべてを破棄できます。

  1. create commit エンドポイントを使用して、空のツリーを指すコミットを作成します。
投稿 https://api.github.com/repos/USER/REPO/git/commits

{
  "メッセージ": "最初のコミット",
  「ツリー」: 「4b825dc642cb6eb9a060e54bf8d69288fbee4904」
}

今回は、返されたコミット SHA に注意する必要があります。

  1. 更新参照エンドポイントを使用して、作成したばかりのコミットへの分岐点を作成します (Use Of The Force TMに注意してください)。
パッチ https://api.github.com/repos/USER/REPO/git/refs/heads/master

{
    "sha": "<コミットのSHA>",
    「力」:真
}
  1. 終わり!リポジトリには、ブランチが 1 つ、コミットが 1 つ、ファイルが 0 になりました。
于 2018-11-25T20:50:15.773 に答える