GitHub CLIを利用すると、わざわざブラウザからGitHubへアクセスせずとも、リモートリポジトリの作成・操作やローカルリポジトリと紐づいているGitHubページをブラウザから開くことが可能になります。
本記事では、自分がよく利用するGitHub CLIコマンドをまとめてみました。特に作成済のローカルリポジトリを元に新しくリモートリポジトリを作成・紐付ける方法について解説しています。
公式Docs: GitHub CLI | Take GitHub to the command line
目次:
ローカルで作成したリポジトリを元にリモートリポジトリを作成
準備として、ローカルのディレクトリを初期化(Gitディレクトリ: ローカルリポジトリの作成)
$ cd TargetDirectory
$ git init .
gh repoコマンドでリモートリポジトリを作成
GitHubでリモートリポジトリを作成。基本的な構文は下記。
$ gh repo create [<name>] [flags]
GitHub CLI | Take GitHub to the command line (gh repo)
対話的にリモートリポジトリを作成する場合、特にオプションをつけずに下記を実行。
対話的にリモートリポジトリを作成する場合、ローカルリポジトリを元にしたリモートリポジトリを作成することはできません。
作成したリモートリポジトリとローカルリポジトリを紐付ける作業が別途必要になります。
$ gh repo create
create a new remote repository and clone it locallygh repo create my-project --public --clone
ローカルリポジトリを元にリモートリポジトリを作成する場合。
To create a remote repository from an existing local repository, specify the source directory with --source. By default, the remote repository name will be the name of the source directory. Pass --push to push any local commits to the new repository.
create a remote repository from the current directorygh repo create my-project --private --source=. --remote=upstream
今いるディレクトリ名を元に、リモートリポジトリ名をディレクトリそのまま、非公開状態でリモートリポジトリを作る場合。
$ gh repo create --private --source=.
上記に加えて、ローカルでのコミット履歴を反映させる形は下記のように—pushを追加。
$ gh repo create --private --source=. --push
リモートリポジトリがローカルリポジトリとの紐づけ
作成したリモートリポジトリがローカルリポジトリに紐づいているか確認。
$ git remote -v
紐づけが上手くいかない場合、一旦git remoteに紐づいたリモートリポジトリ名を削除する。
$ git remote rm origin
必要に応じてGitHub上のリポジトリを一旦削除し、再度 gh repo ~ でリモートリポジトリを作成して紐付ける。
Git pushを行いローカルとリモートリポジトリのブランチ名を一致させる
上記のようにローカルリポジトリを新規作成し、それを元にリモートリポジトリを作成した場合で、全くファイルがない状態でgit pullを実行すると下記のように「mainブランチが見つかりません」というエラーメッセージが表示されます。
$ git pull origin main
fatal: couldn't find remote ref main
原因: まだGitHubのリポジトリ上に一つもファイルを作成していないため、masterブランチが作成されていなかった。
git pull origin masterしたら「fatal: Couldn't find remote ref master」となる #Git - Qiita
この状態を解決するために、一度ローカルからリモートリポジトリへpushを行います。
ローカルリポジトリが空の状態、コミット履歴なしの状態ではpushすることができないので、試しに.gitignoreファイルを作成し、コミットしてリモートリポジトリへpushします。
# Gitから追跡除外させるファイルを登録
login_info.json
cookies.json
下記のようにコミットを行いリモートリポジトリへpushします。
$ git add .gitignore
$ git commit -m "Initial Commit: added .gitignore"
$ git push origin main
一度git pushを行うとリモートリポジトリにもmainブランチ作成され、以降は git pull を行うことが可能になります。
ローカルリポジトリに紐づいたGitHubリモートリポジトリをブラウザで開く
対象のGitディレクトリに移動してgh browseを行うと、デフォルト設定のブラウザが起動して該当ディレクトリに紐付けられたGitHubページが開きます。
$ cd ~/target-directory
$ gh browse
GitHub CLI | Take GitHub to the command line (gh browse)
そもそもの基本的なGit操作に関して
そもそもの基本的なGit操作に関して、 Gitの基本ワークフロー。流れとコマンドまとめ の記事でまとめています。Git全体像のおさらいとしてぜひチェックしてみてください。
この記事の気になった箇所を読み返す:
Category: 開発・プログラミング | エンジニアリング
Tags: