私は新しいローカル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はシェルアクセスを提供しません。
GitHub APIを使用してコマンドラインからGitHubリポジトリを作成できます。 リポジトリAPI を調べてください。約3分の1下にスクロールすると、 "Create" というタイトルのセクションが表示されます。このセクションには、APIを介してリポジトリを作成する方法が説明されています。 APIのレポもあります。明らかにこれを行うためにgit
を使用することはできませんが、curl
のようなツールを使ってコマンドラインからそれを行うことができます。
API以外では、コマンドラインからGitHubにレポジトリを作成する方法はありません。ご存じのとおり、GitHubはShellアクセスなどを許可していません。そのため、GitHub APIを除いて、リポジトリを作成する唯一の方法はGitHubのWebインターフェースを使用することです。
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
これは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用に更新)
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
簡単な手順(git
+ hub
=>GitHubを使用):
リポジトリに移動するか、空のリポジトリを作成してください:mkdir foo && cd foo && git init
。
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
環境変数を使用してください。
その後、通常どおりコミットしてプッシュするか、hub commit
/hub Push
を確認します。
さらに支援が必要な場合は、hub help
を実行してください。
参照: コマンドラインを使ってGitリポジトリをインポートする at GitHub.
公式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
リポジトリを作成するたびに完全なコードを入力するのは面倒です。
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
もっと簡単な方法は:
githubscript.sh
という名前のシェルスクリプトを作成します。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
は、argument
nameを呼び出すときにscript
name__として渡されるrepository name
です。スクリプトを保存する前にYOUR_GITHUB_USER_NAME
を変更してください。
script
name__ファイルへの必要な許可を設定します。chmod 755 githubscript.sh
Scriptsディレクトリを環境設定ファイルに含めます。 nano ~/.profile; export PATH="$PATH:$HOME/Desktop/my_scripts"
Githubscript.shファイルを実行するためのエイリアスも設定します。 nano ~/.bashrc; alias githubrepo="bash githubscript.sh"
それでは端末に.bashrc
と.profile
ファイルをリロードしてください。 source ~/.bashrc ~/.profile;
新しいリポジトリ、すなわちdemo
name__を作成します。githubrepo demo;
いいえ、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"}'
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
Rubyistの場合:
gem install githubrepo
githubrepo create *reponame*
プロンプトでユーザ名とpwを入力してください
git remote add Origin *ctrl v*
git Push Origin master
ソース: Elikem Adadevoh
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
=(オプション)リポジトリ内のアプリの言語を設定します@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"
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のパスワードを入力します。
トークンの作成方法については、 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"
}
あなたは行くことによっていつでもあなたのトークンを取り消すことができます ここ
すべての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
オブジェクトのドキュメントは ここ です。
担当者の理由で、これをコメントとして追加することはできませんが( bennedich's answer としたほうがよいでしょう)、Windowsコマンドラインの場合、正しい構文は次のとおりです。
curl -u YOUR_USERNAME https://api.github.com/user/repos -d "{\" name\":\" YOUR_REPO_NAME\"}"
基本的な形式は同じですが、singleの代わりに二重引用符( ")を使用し、POSTパラメータで送信された二重引用符をバックスラッシュでエスケープする必要があります。私のユーザー名を一重引用符で囲みますが、ユーザー名にスペースが含まれている(可能な場合)場合は、おそらく二重引用符が必要です。
必要なものは 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
免責事項:私はオープンソースプロジェクトの作者です
この機能は、 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
};
私は好きこの解決策を見つけた: 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ユーザーアカウントに新しいパブリックリモートリポジトリを作成できます。