ブラウザーを開かずにCLIからGitHubにリモートリポジトリを作成することはできますか?


348

新しいローカルGitリポジトリを作成しました。

~$ mkdir projectname
~$ cd projectname
~$ git init
~$ touch file1
~$ git add file1
~$ git commit -m 'first commit'

新しいリモートリポジトリを作成し、ここからGitHubへのコミットをプッシュするgitコマンドはありますか?ブラウザーを起動してCreate a New Repositoryに進むだけでも大した問題ではないことはわかっていますが、CLIからこれを実現する方法があれば幸いです。

私は膨大な量の記事を読みましたが、gitコマンドを使用してCLIからリモートリポジトリを作成する方法について言及した記事はありませんでした。Tim Lucasのすばらしい記事、新しいリモートgitリポジトリのセットアップは、私が見つけた中で最も近いものですが、GitHubはシェルアクセスを提供していません

回答:


215

GitHub APIを使用して、コマンドラインからGitHubリポジトリを作成できます。リポジトリAPIを確認してください。3分の1ほど下にスクロールすると、APIを介してレポを作成する方法を説明する「作成」というタイトルのセクションが表示されます(その真上には、APIでレポをフォークする方法を説明するセクションもあります) )。明らかにgitこれを行うために使用することはできませんが、コマンドラインを介してのようなツールで行うことができますcurl

APIの外では、コマンドラインからGitHubにリポジトリを作成する方法はありません。ご指摘のとおり、GitHubではシェルへのアクセスなどが許可されていないため、GitHub APIを除いて、リポジトリを作成する唯一の方法はGitHubのウェブインターフェースを使用することです。


73
たくさんのmipadiに感謝します!GitHub APIについて知りませんでした。同じ問題を持つ他のすべての人にとって、これは私が基本的に行ったことです:curl -F 'login=username' -F 'token=API Token' https://github.com/api/v2/yaml/repos/create -F name=reponame。APIトークンはGitHubサイトで確認できます。[ アカウント設定 ]をクリックし、管理情報APIトークン(32文字の長い文字列)を探します。
anddoutoi

1
これは古くなっているようです。少なくともAPIトークンは見つかりません。
Joachim Breitner


2
@cseder:Gitはリポジトリを作成するためにこれを必要としませんが、GitHubでリポジトリを設定することは必要です。Mercurialでは、存在しないレポにプッシュすることでリモートサーバーにレポを作成することもできないと思います。
ミパディ14

5
@cseder:問題は、GitHub APIを介してGitHubにリモートリポジトリを作成することが可能かどうかを尋ねています。新しいリポジトリを作成してGitHubの既存のリポジトリにプッシュする方法ではありません。
ミパディ14

321

github API v3のCLIコマンド(すべてのCAPSキーワードを置き換える):

curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}'
# Remember replace USER with your username and REPO with your repository/application name!
git remote add origin git@github.com:USER/REPO.git
git push origin master

43
最初のコマンドのわずかな問題は、GitHubパスワードをに残していることです~/.bash_history。私は交換することをお勧め-u 'USER:PASS'して-u 'USER'、その後カールが対話的にパスワードの入力を求められます。
ivanzoid

20
、最初からレポは私的利用をするために:curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO", "private":"true"}'
ジョー・フレッチャー

3
入力の手間を省くためにbashスクリプトを書きました。ユーザー入力を受け取り、適切
RobW

3
ここでgitの別名として追加する方法は次のとおりです。git config --global alias.gh-create '!sh -c "curl -u \"USERNAME\" https://api.github.com/user/repos -d \"{\\\"name\\\":\\\"$1\\\"}\"" -'
ロビン・ウィンスロー

13
アクセストークン生成して次のように使用できることを忘れないでくださいcurl https://api.github.com/user/repos?access_token=myAccessToken -d '{"name":"REPO"}'。:-)
IonicăBizău

69

これは3つのコマンドで実行できます。

curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
git remote add origin git@github.com:nyeates/projectname.git
git push origin master

(v3 Github API用に更新)


これらのコマンドの説明...

githubリポジトリを作成する

    curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
  • curlは、URLを取得して操作するUNIXコマンド(上記はMacでも動作します)です。通常はすでにインストールされています。
  • 「-u」は、サーバー認証に使用するユーザー名とパスワードを指定するcurlパラメーターです。
    • (上記の例のように)ユーザー名だけを指定すると、curlはパスワードの入力を求めます。
    • パスワードを入力する必要がない場合は、認証に関するgithubs apiドキュメントを参照してください
  • 「-d」は、リクエストとともにPOSTデータを送信できるようにするcurlパラメータです
  • 「name」は必要な唯一のPOSTデータです。「説明」も含めたい
  • すべてのPOSTデータを単一引用符 ''で引用するのが良いことがわかりました

プッシュ先を定義

git remote add origin git@github.com:nyeates/projectname.git
  • github上の接続された(リモート)リポジトリの場所と存在の定義を追加
  • 「origin」は、ソースがどこから来たかのためにgitによって使用されるデフォルトの名前です
    • 技術的にはgithubからのものではありませんでしたが、今ではgithubリポジトリがレコードのソースになります
  • 「git@github.com:nyeates」は、GitHubで信頼できるSSH鍵ペアをすでに設定していることを前提としたSSH接続です。

ローカルリポジトリをgithubにプッシュする

git push origin master
  • マスターローカルブランチからオリジンリモート(github)にプッシュする

54

あなたがインストールする場合はディファンクトの優れたハブのツールを、これは同じくらい容易になります

git create

著者の言葉によれば、「hubはGitHubをより使いやすくするgitのコマンドラインラッパーです。


3
大好きhub!また、便利であるhubかのように- hub通常の別名であるgit... git forkのためのレポのフォーク作成する、pwdあなたがで...イェーイあることをクローン化されたレポのは。
Alex Grey 14

2
このツールは素晴らしいです!認証トークンを保存するので、パスワードを何度も入力する必要がありません。また、githubのZSHプラグインも確認してください。
ドリアン

19

簡単な手順(git+ hub=> GitHubを使用):

  1. ハブGitHub)をインストールします。

    • OS X: brew install hub
    • 持っゴーgo get github.com/github/hub
    • それ以外の場合(Goも持っています):

      git clone https://github.com/github/hub.git && cd hub && ./script/build
      
  2. リポジトリに移動するか、空のリポジトリを作成しますmkdir foo && cd foo && git init

  3. 実行:hub create、GitHubの認証情報について初めて尋ねられます。

    使用法: hub create [-p] [-d DESCRIPTION] [-h HOMEPAGE] [NAME]

    例: hub create -d Description -h example.com org_name/foo_repo

    Hubは、APIに初めてアクセスしてOAuthトークンに交換する必要があるときに、GitHubのユーザー名とパスワードの入力を求めます~/.config/hub

    新しいリポジトリに明示的に名前を付けるには、を渡します。NAMEオプションでORGANIZATION/NAME、メンバーである組織の下に作成するフォームを渡します。

    では-p、プライベートリポジトリを作成し、持つ -d-hリポジトリの説明とホームページを設定しURL、それぞれ。

    プロンプトが出されないようにするにはGITHUB_USERGITHUB_PASSWORD環境変数を使用します。

  4. 次に、通常どおりコミットしてプッシュするか、hub commit/を確認しhub pushます。

さらにヘルプが必要な場合は、次を実行してくださいhub help

参照:GitHubのコマンドライン使用したGitリポジトリのインポート


GITHUB_USERおよびGITHUB_PASSWORD環境変数を設定するにはどうすればよいですか?
Kasper

1
おそらくあなたはそれらをエクスポートできます。GH#245を参照してください。
kenorb 2015

1
「ハブ」はMacPortsでも利用できることに注意してください。
tiktak 2018年

これは私が探していたものだと思います!:)
TᴀʀᴇǫMᴀʜᴍᴏᴏᴅ

11

おそらくこれを行う公式のgithub gemがあります。学んだ情報をさらに追加していきますが、今この宝石を発見しているだけなので、まだあまり知りません。

更新:APIキーを設定した後、createコマンドを使用してgithubに新しいリポジトリを作成できますcreate-from-localが、現在のローカルリポジトリを取得してgithubに対応するリモートを作成するためのコマンドを使用できません。

$ gh create-from-local
=> error creating repository

誰かがこれについて何らかの洞察を持っている場合、私は私が間違っていることを知りたいです。既に問題が報告されています。

更新:私は最終的にこれを機能させました。問題の再現方法は正確にはわかりませんが、最初から始めただけです(.gitフォルダーを削除しました)

git init
git add .emacs
git commit -a -m "adding emacs"

これで、この行はリモートリポジトリを作成してプッシュしますが、残念ながら、希望するリポジトリの名前を指定することはできません。私はそれをgithubから「dotfiles」と呼んでほしかったが、gh gemは現在のフォルダーの名前を使用しただけで、ホームフォルダーにいたので「jason」でした。(私は望ましい行動を求めるチケットを追加しまし

gh create-from-local

一方、このコマンドは、リモートリポジトリの名前を指定する引数を受け入れますが、新しいプロジェクトを最初から開始することを目的としています。つまり、このコマンドを呼び出した後、ローカルリポジトリを追跡する新しいリモートリポジトリを取得します現在の位置を基準にして新しく作成されたサブフォルダーにあり、どちらも引数として指定された名前を持ちます。

gh create dotfiles

3
このプロジェクトは、年間のカップルのためにそれ上の任意の仕事を持っていない、私のために動作しませんでした、そして、暗示として、ここでは、死んでいます。この回答で提案されているように、ハブツールに置き換えられているようです。
jameshfisher 2013

9

Bashシェルを使用してリモートリポジトリをすばやく作成するには

リポジトリを作成するたびに完全なコードを入力するのは面倒です

curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}' git remote add origin git@github.com:USER/REPO.git git push origin master

より簡単な方法は次のとおりです。

  1. / home / USER_NAME / Desktop / my_scriptsという名前のディレクトリにシェルスクリプトを作成します githubscript.sh
  2. 次のコードを変更してgithubscript.shファイルに保存します
#!bin/bash
curl -u 'YOUR_GITHUB_USER_NAME' https://api.github.com/user/repos -d "{\"name\":\"$1\"}";
git init;
git remote add origin git@github.com:YOUR_GITHUB_USER_NAME/$1.git;

NBは ここに$1あるrepository nameとして渡されるargument呼び出し時にscript 変更しYOUR_GITHUB_USER_NAMEたスクリプトを保存する前に。

  1. scriptファイルに必要な権限を設定します chmod 755 githubscript.sh

  2. スクリプトのディレクトリを環境設定ファイルに含めます。 nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"

  3. また、githubscript.shファイルを実行するエイリアスを設定します。 nano ~/.bashrc; alias githubrepo="bash githubscript.sh"

  4. .bashrc.profileファイルをターミナルにリロードします。 source ~/.bashrc ~/.profile;

  5. ここで、新しいリポジトリを作成しますdemo githubrepo demo;


1
あなたのコードでは、私はこの部分を変更: git remote add origin git@github.com:YOUR_GITHUB_USER_NAME/$1.git; する git remote add origin https://github.com/YOUR_GITHUB_USER_NAME/$1.git; SSHキーを使用していないユーザーについては、。
Damiii 2016

5

@Mechanical Snailによる他の回答に基づいています。ただし、Pythonを使用しない場合を除きます。これをあなたに追加してください~/.gitconfig

[github]
    user = "your-name-here"
[alias]
    hub-new-repo = "!REPO=$(basename $PWD) GHUSER=$(git config --get github.user); curl -u $GHUSER https://api.github.com/user/repos -d {\\\"name\\\":\\\"$REPO\\\"} --fail; git remote add origin git@github.com:$GHUSER/$REPO.git; git push origin master"

このエイリアスが大好きです。再度ありがとう、@ Robru。PSが機能しない場合、またはOSの新規インストール後に機能しなくなった場合は、curlがインストールされていることを確認してください。
daveloyall

5

いいえ、username GitHub上に作成するにはブラウザを少なくとも1回開く必要があります。作成後、GitHub APIを利用しコマンドラインからリポジトリを作成できます。コマンドは次のとおりです。

curl -u 'github-username' https://api.github.com/user/repos -d '{"name":"repo-name"}'

例えば:

curl -u 'arpitaggarwal' https://api.github.com/user/repos -d '{"name":"command-line-repo"}'

1
次にgit remote add origin https://github.com/github-username/repo-name.git、ローカルプロジェクトをgithubにリンクします。たとえば、コマンドは次のようになりますgit remote add origin https://github.com/arpitaggarwal/command-line-repo.git
SherylHohman

4

2要素認証を使用するユーザーの場合、bennedichのソリューションを使用できますが、最初のコマンドにX-Github-OTPヘッダーを追加するだけで済みます。CODEを、2要素認証プロバイダーから取得したコードに置き換えます。USERとREPOを、彼のソリューションと同じように、リポジトリのユーザー名と名前に置き換えます。

curl -u 'USER' -H "X-GitHub-OTP: CODE" -d '{"name":"REPO"}' https://api.github.com/user/repos
git remote add origin git@github.com:USER/REPO.git
git push origin master

3

GitHubとBitBucketのREST APIを使用して、Gitterと呼ばれる気の利いたスクリプトを作成しました。

https://github.com/dderiso/gitter

BitBucket:

gitter -c -r b -l javascript -n node_app

GitHub:

gitter -c -r g -l javascript -n node_app
  • -c =新しいリポジトリを作成
  • -r =リポプロバイダー(g = GitHub、b = BitBucket)
  • -n =レポに名前を付ける
  • -l =(オプション)リポジトリでアプリの言語を設定します

3

Bennedichの答えに基づいて、これを行うためのGitエイリアスを作成しました。次のものをに追加します~/.gitconfig

[github]
    user = "your_github_username"
[alias]
    ; Creates a new Github repo under the account specified by github.user.
    ; The remote repo name is taken from the local repo's directory name.
    ; Note: Referring to the current directory works because Git executes "!" shell commands in the repo root directory.
    hub-new-repo = "!python3 -c 'from subprocess import *; import os; from os.path import *; user = check_output([\"git\", \"config\", \"--get\", \"github.user\"]).decode(\"utf8\").strip(); repo = splitext(basename(os.getcwd()))[0]; check_call([\"curl\", \"-u\", user, \"https://api.github.com/user/repos\", \"-d\", \"{{\\\"name\\\": \\\"{0}\\\"}}\".format(repo), \"--fail\"]); check_call([\"git\", \"remote\", \"add\", \"origin\", \"git@github.com:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"push\", \"origin\", \"master\"])'"

それを使用するには、実行します

$ git hub-new-repo

ローカルリポジトリ内の任意の場所から、プロンプトが表示されたらGithubパスワードを入力します。


これは私にはうまくいきませんでした。'No
such

これも私にはうまくいきませんでした。それは戻るcurl: (22) The requested URL returned error: 401 Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib64/python3.2/subprocess.py", line 488, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['curl', '-u', 'myusername', 'https://api.github.com/user/repos', '-d', '{"name": "reponame"}', '--fail']' returned non-zero exit status 22
Da Frenk

1
Pythonの使用は少し多く、余分なバックスラッシュやその他の句読点の形で多くのノイズを追加します。私はbashだけのバージョンを作成しました:stackoverflow.com/a/28924077/1423157
robru

3

必要なのはハブです。ハブはgitのコマンドラインラッパーです。エイリアスを使用してネイティブgitと統合するように作られています。新しいリポジトリの作成を含むgitにgithubアクションを提供しようとします。

→  create a repo for a new project
$ git init
$ git add . && git commit -m "It begins."
$ git create -d "My new thing"
→  (creates a new project on GitHub with the name of current directory)
$ git push origin master


3

すべてのPython 2.7。*ユーザー。現在バージョン3にあるGithub APIの周囲には、GitPythonと呼ばれるPythonラッパーがありますeasy_install PyGithubまたはを使用してインストールするだけpip install PyGithubです。

from github import Github
g = Github(your-email-addr, your-passwd)
repo = g.get_user().user.create_repo("your-new-repos-name")

# Make use of Repository object (repo)

Repositoryオブジェクトのドキュメントがあるここに


2

トークンの作成方法については、こちらをご覧ください。これは、入力するコマンドです(この回答の日付現在。すべてのCAPSキーワードを置き換えます)。

curl -u 'YOUR_USERNAME' -d '{"scopes":["repo"],"note":"YOUR_NOTE"}' https://api.github.com/authorizations

パスワードを入力すると、トークンを含む以下が表示されます。

{
  "app": {
    "name": "YOUR_NOTE (API)",
    "url": "http://developer.github.com/v3/oauth/#oauth-authorizations-api"
  },
  "note_url": null,
  "note": "YOUR_NOTE",
  "scopes": [
    "repo"
  ],
  "created_at": "2012-10-04T14:17:20Z",
  "token": "xxxxx",
  "updated_at": "2012-10-04T14:17:20Z",
  "id": xxxxx,
  "url": "https://api.github.com/authorizations/697577"
}

ここに行くといつでもトークンを取り消すことができます


2

担当者の理由により、これをコメントとして追加することはできません(ベネディッチの回答に合わせたほうがよい場合))、Windowsコマンドラインの場合、正しい構文は次のとおりです。

curl -u YOUR_USERNAME https://api.github.com/user/repos -d "{\" name \ ":\" YOUR_REPO_NAME \ "}"

基本的な形式は同じですが、単一引用符の代わりに二重引用符( ")を使用し、POSTパラメーターで送信される二重引用符(-dフラグの後)をバックスラッシュでエスケープする必要があります。ユーザー名の周りの単一引用符も削除しました。ただし、ユーザー名にスペースが含まれている場合(可能ですか?)、おそらく二重引用符が必要です。


Windowsユーザーに知っておくと便利です。いいえ、ユーザー名にスペースを含めることはできません(github.comのサインアップフォームには、「ユーザー名には英数字または単一のハイフンのみを含めることができ、ハイフンで開始または終了することはできません」と記載されています)。したがって、ユーザー名の二重引用符は必要ありません。
mklement0

Github Power Shellは、Windowsでcurlを使用した-uを受け入れません:(
JuliandotNut

2

Disclamier:私はオープンソースプロジェクトの作者です

この機能は次でサポートされています:https : //github.com/chrissound/Human-Friendly-Commands基本的にこのスクリプトです:

#!/usr/bin/env bash

# Create a repo named by the current directory
# Accepts 1 STRING parameter for the repo description
# Depends on bin: jq
# Depends on env: GITHUB_USER, GITHUB_API_TOKEN
github_createRepo() {
  projName="$(basename "$PWD")"
  json=$(jq -n \
    --arg name "$projName" \
    --arg description "$1" \
    '{"name":$name, "description":$description}')

  curl -u "$GITHUB_USER":"$GITHUB_API_TOKEN" https://api.github.com/user/repos -d "$json"
  git init
  git remote add origin git@github.com:"$GITHUB_USER"/"$projName".git
  git push origin master
};

これは確かにGitHubを使用するための新しい方法です Personal Access Token。(経由で追加する古い方法は?access_token=${ACCESSTOKEN}機能しません
。– not2qubit

0

私が好きなこのソリューションを見つけました:https : //medium.com/@jakehasler/how-to-create-a-remote-git-repo-from-the-command-line-2d6857f49564

最初にGithubパーソナルアクセストークンを作成する必要があります

お好みのテキストエディターで〜/ .bash_profileまたは〜/ .bashrcを開きます。ファイルの先頭近くに次の行を追加します。残りのエクスポートされた変数は次のとおりです。

export GITHUB_API_TOKEN=<your-token-here>

以下のどこかで、他のbash関数によって、次のようなものを貼り付けることができます。

function new-git() {
    curl -X POST https://api.github.com/user/repos -u <your-username>:$GITHUB_API_TOKEN -d '{"name":"'$1'"}'
}

これで、新しいプロジェクトを作成するときはいつでも、コマンド$ new-git awesome-repoを実行してGithubユーザーアカウントに新しいパブリックリモートリポジトリを作成できます。



-2

ここに私の最初のgitコマンドがあります(おそらく、このアクションはで行われますC:/Documents and Settings/your_username/):

mkdir ~/Hello-World
# Creates a directory for your project called "Hello-World" in your user directory
cd ~/Hello-World
# Changes the current working directory to your newly created directory
touch blabla.html
# create a file, named blabla.html
git init
# Sets up the necessary Git files
git add blabla.html
# Stages your blabla.html file, adding it to the list of files to be committed
git commit -m 'first committttt'
# Commits your files, adding the message 
git remote add origin https://github.com/username/Hello-World.git
# Creates a remote named "origin" pointing at your GitHub repository
git push -u origin master
# Sends your commits in the "master" branch to GitHub

1
この場合、Hello-WorldリポジトリはGitHubで利用できるはずですが、質問の問題には対応していません。
JuliandotNut 2016年

-2

最近create-github-repoについて知りました。Readmeから:

インストール:

$ npm i -g create-github-repo

使用法:

$ export CREATE_GITHUB_REPO_TOKEN=<access_token>
$ create-github-repo --name "My coolest repo yet!"

または:

$ create-github-repo <access_token> --name "My coolest repo yet!"

-7

コマンドラインで新しいリポジトリを作成する

echo "# <RepositoryName>" >> README.md

git init

git add README.md

git commit -m "first commit"

git remote add origin https://github.com/**<gituserID>/<RepositoryName>**.git

git push -u origin master

コマンドラインから既存のリポジトリをプッシュする

git remote add origin https://github.com/**<gituserID>/<RepositoryName>**.git

git push -u origin master

1
これは動作しません; リモートリポジトリは作成されません。
Matthewが
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.