web-dev-qa-db-ja.com

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

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

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

新しいリモートリポジトリを作成し、ここからGitHubにコミットするためのgitコマンドはありますか?ブラウザを起動して 新しいリポジトリを作成する に進むのは大したことではありませんが、CLIからこれを実現する方法があれば私は幸せです。

私は膨大な量の記事を読みましたが、gitコマンドを使用してCLIからリモートレポジトリを作成する方法については触れていません。 Tim LucasによるNiceの記事 新しいリモートgitリポジトリの設定 が私が一番よく見つけたものですが、GitHubはシェルアクセスを提供しません

327
anddoutoi

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

API以外では、コマンドラインからGitHubにレポジトリを作成する方法はありません。ご存じのとおり、GitHubはShellアクセスなどを許可していません。そのため、GitHub APIを除いて、リポジトリを作成する唯一の方法はGitHubのWebインターフェースを使用することです。

200
mipadi

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 [email protected]:USER/REPO.git
git Push Origin master
306
bennedich

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

curl -u 'nyeates' https://api.github.com/user/repos -d '{"name":"projectname","description":"This project is a test"}'
git remote add Origin [email protected]: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はパスワードを要求します。
    • パスワードを入力したくない場合は、 Authentication にあるgithubs apiのドキュメントを参照してください。
  • "-d"は、リクエストと共にPOSTデータを送信することを可能にするcurlパラメータです。
  • "name"は必要なPOSTデータのみです。私は「説明」も含めるのが好きです
  • すべてのPOSTデータを一重引用符で囲むのが良いことがわかりました。

プッシュ先を定義する

git remote add Origin [email protected]:nyeates/projectname.git
  • githubに接続(リモート)レポジトリの場所と存在の定義を追加
  • "Origin"はソースがから来た場所のためにgitによって使用されるデフォルトの名前です。
    • 技術的にはgithubから来たわけではありませんが、今ではgithubリポジトリがレコードのソースになります。
  • "[email protected]:nyeates"は、あなたがgithubで信頼できるsshキーペアを既に設定していると仮定したssh接続です。

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

git Push Origin master
  • マスターローカルブランチからOriginリモート(github)にプッシュする
65
Nay

defunkt's excellent Hub toolをインストールすると、これは同じくらい簡単になります。

git create

著者の言葉では、「hubはgitのコマンドラインラッパーであり、GitHubをより良くします。

50
cavalcade

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

  1. HubGitHub )をインストールしてください。

    • OS X:brew install hub
    • 持っている Gogo 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_USERおよびGITHUB_PASSWORD環境変数を使用してください。

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

さらに支援が必要な場合は、hub helpを実行してください。

参照: コマンドラインを使ってGitリポジトリをインポートする at GitHub.

15
kenorb

公式github gem がありますが、これはこれを行うためのものです。私は学んだときにもっと情報を追加しようとします、しかし、私は今この宝石を発見したばかりなので、私はまだあまり知りません。

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

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

誰かがこれについて何らかの洞察を持っているならば、私は私が間違っていることを知りたいです。すでに issue提出済み があります。

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

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

この行でリモートレポジトリを作成し、それにプッシュすることもできますが、残念ながら私は欲しいレポの名前を指定することができないと思います。私はそれをgithub上で "dotfiles"と呼ばれることを望みましたが、gh gemはちょうど私のホームフォルダにいたので "jason"だった現在のフォルダの名前を使いました。 (私は チケット 希望の動作を求めて追加しました)

gh create-from-local

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

gh create dotfiles
11
Jason Marcell

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

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

curl -u 'USER' https://api.github.com/user/repos -d '{"name":"REPO"}' git remote add Origin [email protected]: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 [email protected]:YOUR_GITHUB_USER_NAME/$1.git;

N.B。ここで$1は、argumentnameを呼び出すときにscriptname__として渡されるrepository nameです。スクリプトを保存する前にYOUR_GITHUB_USER_NAMEを変更してください。

  1. scriptname__ファイルへの必要な許可を設定します。chmod 755 githubscript.sh

  2. Scriptsディレクトリを環境設定ファイルに含めます。 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. 新しいリポジトリ、すなわちdemoname__を作成します。githubrepo demo;

9

いいえ、GitHubでusernameを作成するには、少なくとも一度ブラウザを開く必要があります。作成したら、利用できます 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"}'
4
Arpit

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 [email protected]:USER/REPO.git
git Push Origin master
4
user886596

Rubyistの場合:

gem install githubrepo
githubrepo create *reponame*

プロンプトでユーザ名とpwを入力してください

git remote add Origin *ctrl v*
git Push Origin master

ソース: Elikem Adadevoh

3
Benjamin Dunphy

GitHubとBitBucketにREST AP​​Iを使って、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
D.Deriso

@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 [email protected]:$GHUSER/$REPO.git; git Push Origin master"
3
robru

Bennedich's answer に基づいて、これを行うための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\", \"[email protected]:{0}/{1}.git\".format(user, repo)]); check_call([\"git\", \"Push\", \"Origin\", \"master\"])'"

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

$ git hub-new-repo

ローカルリポジトリのどこからでも、プロンプトが表示されたらGithubのパスワードを入力します。

3

トークンの作成方法については、 here を入力してください(この回答の時点では、すべての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
reubano

すべてのPython 2.7。*ユーザーのために。 Gituby と呼ばれる、現在バージョン3にある Github API を囲む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
quine

担当者の理由で、これをコメントとして追加することはできませんが( bennedich's answer としたほうがよいでしょう)、Windowsコマンドラインの場合、正しい構文は次のとおりです。

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

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

2
traycerb

必要なものは hub です。 Hubはgit用のコマンドラインラッパーです。 aliasを使ってネイティブのgitと統合するように作られました。新しいリポジトリを作成するなど、gitHubアクションをgitに提供しようとします。

→  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
2
cnvzmxcvmcx

免責事項:私はオープンソースプロジェクトの作者です

この機能は、 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 [email protected]:"$GITHUB_USER"/"$projName".git
  git Push Origin master
};
2

私は好きこの解決策を見つけた: 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ユーザーアカウントに新しいパブリックリモートリポジトリを作成できます。

0
Joshua Dance