対象読者
前提
- 環境:win10,cmd または wsl2
- シェルについて最低限理解している
- ローカルに Git をインストール済み→クリックするとwindows版のgitの選択・インストール画面に遷移します)
- GitHub のアカウントを既に作っている→クリックするとGitHubのホームページに遷移します。Sing up for Git Hubをクリックしてフォームを埋めてアカウントを作成してください。
- ローカルは自分のPC、リモートは GitHub 上のリポジトリと読み替えてください。
何について書いている?
- ローカルリポジトリとリモートリポジトリにおけるGitとGitHubの接続手順について書いている。
何ができるようになる?
- ローカルのコンピュータとリモートリポジトリを用いたバージョン管理ができるようになる。
目次
- Gitのユーザー名とメールアドレスの設定
- GitHub側の初期設定
- Gitを用いてリモートリポジトリと連携するローカルリポジトリを作成する手順
- シェルでGitHubのリモートリポジトリとローカルリポジトリの連携
- リモートリポジトリのURLをhoge部分に張り付ける流れ
- SSH鍵の作成
- ローカルでSSH鍵の作成
- ローカルで作ったSSH公開鍵をリモートリポジトリに置く手順
- SSH接続の認証
- リモートリポジトリをローカルにコピーする方法
- Gitの設定の確認
- 空のリモートリポジトリを作成した後ローカルリポジトリから空のリモートリポジトリにpushした時発生するエラー
- 上記のエラーを防ぐ方法と解決する方法
- メタ構文変数(hogeなど)の表現
- まとめ
- 参考にさせていただきました
Gitのユーザー名とメールアドレスの設定
- ユーザー名
git config --global user.name "hoge"
- メールアドレス
git config --global user.email "your_email@example.com"
GitHub側の初期設定
- ブラウザからGitHubでリポジトリを作成。
以下のURLをクリック
- 以下の項目を入力・選択する
- Repository name(リポジトリ名)※必須
→ URLの一部になります(例:https://github.com/ユーザー名/リポジトリ名
)
- Description(説明)※任意
→ 公開・非公開どちらでも、他人や将来の自分にわかりやすく書くのが望ましい
-
Visibility(公開範囲)を選択
-
Public
:誰でも見られる -
Private
:自分と招待した人だけ見られる(あとから Public に変更可能)
-
-
Initialize this repository with:(初期化オプション)※任意
-
Add a README file
:プロジェクトの説明書きを含む README.md を作成 -
.gitignore
:開発環境に応じて無視すべきファイルのテンプレートを選択(Python, Nodeなど) -
Choose a license
:MIT、GPL、Apacheなどのオープンソースライセンスを選ぶ-
※上記のいずれかのオプションを選択しておくと、リモートリポジトリに main ブランチが作成されます
-
README の追加を特に推奨します。
-
理由:完全に空のリモートリポジトリを作った状態で
git push
を実行しても、GitHub 側には main ブランチが存在しないため、エラーになります。ローカル側では
git init
時点で main ブランチが作成されますが、GitHub 側は初期化されていないため、push先のブランチを認識できずsrc refspec main does not match any
などのエラーが出ます。
-
最後に [Create repository] をクリックして完了
Gitを用いてリモートリポジトリと連携するローカルリポジトリを作成する手順
ディレクトリを作成
mkdir my-repo
ディレクトリに移動
cd my-repo
Gitの初期化
git init
リモートリポジトリを登録
git remote add origin git@github.com:ユーザー名/リポジトリ名.git
※git@github.com:ユーザー名/リポジトリ名.gitの出し方は以下のリモートリポジトリのURLをhoge部分に張り付ける流れを参照してください。
- シェルでgit管理下予定のフォルダ・ディレクトリを作成する。
- 作成したフォルダ・ディレクトリに移動する。
- git initを実行するつまりgit管理下のフォルダ・ディレクトリにする初期化設定(初期設定)をする。
- git管理下のフォルダ・ディレクトリとリモートリポジトリと接続しローカルの変更とリモートの変更を追跡しファイルの管理がローカル・リモートからできる状態にできた。
シェルでGitHubのリモートリポジトリとローカルリポジトリの連携
リモートリポジトリのURLを指定しfetchとpushの設定をしてローカル・リモートでのリポジトリの変更を追跡可能にする。
git remote set-url origin hoge
リモートリポジトリのURLをhoge部分に張り付ける流れ
→ GitHubリポジトリページで [Code] をクリック
→ [Local] タブ内の [SSH] を選択
→ 表示された git@github.com:ユーザー名/リポジトリ名.git
をコピー
リモートリポジトリのURLが正しいかどうかを確認する
git remote -v
origin git@github.com:hoge/new-repo.git (fetch)
origin git@github.com:hoge/new-repo.git (push)
new-repo.gitが指定されたリモートリポジトリになっていたら成功です。
SSH鍵の作成
SSH鍵は公開鍵暗号方式(要するに暗号)を使った認証情報です。GitHubとSSH接続するにはローカルでSSH鍵(認証鍵)を作成しその公開鍵をGitHubに登録する必要があります。つまり自分のパソコンだけの操作(シェル)とGitHub上での操作(ブラウザでGitHub上での操作)が必要です。
ローカルでSSH鍵の作成
※ a か bのどちらか一つのみ実行してください。
a. 新しく推奨されている暗号:ed25519
ssh-keygen -t ed25519 -C "あなたのメールアドレス"
b. 古い機器やサーバーとの互換性を求める場合の暗号はRSA
ssh-keygen -t rsa -b 4096 -C "あなたのメールアドレス"
ローカルで作ったSSH公開鍵をリモートリポジトリに置く手順
- 以下のURLにアクセスしてください
- https://github.com/settings/ssh
- SSH keysの右にNew SSH keyと書かれているからそれをクリック
- Title:好きな名前(任意)
- Key type:変更不要(通常は Authentication Key)
- Key:ローカルで生成した公開鍵を貼り付ける
SSH接続の認証
ローカルで以下のコマンドを打つ
ssh -T git@github.com
成功すると以下のようなメッセージが表示される
Hi (account名)! You've successfully authenticated, but GitHub does not provide shell access.
リモートリポジトリをローカルにコピーする方法
git clone git@github.com:ユーザー名/リポジトリ名.git
Gitの設定の確認
ローカル・リモートリポジトリの初期化に必要な設定が満たされているか確認しよう(ユーザー名、メールアドレス、リモートURLが正しく指定されているか)
git config -l
空のリモートリポジトリを作成した後ローカルリポジトリから空のリモートリポジトリにpushした時発生するエラー
error: src refspec main does not match any
error: failed to push some refs to 'git@github.com:ユーザー名/リポジトリ名.git'
上記のエラーを防ぐ方法と解決する方法
- a リモートリポジトリを作る際に初期化オプションのどれかを作成・選択しておく
- b(
git remote set-url origin hoge
が完了している段階) ローカルから最初のpush時にブランチ名も指定して明示的に送る。
git push origin HEAD:main
メタ構文変数(hogeなど)の表現
メタ構文変数とは読者が置き換えて使うことが前提されている説明のための仮の名前のことです。
例
git config --global user.name hoge
git config --global user.email hoge
-
git set-url origin hoge
hogeやuser.name,user.emailなどがメタ構文変数に当たります。
※ 本記事内ではhoge
やユーザー名
などは「メタ構文変数」として使っています。
実際には自分の情報に置き換えてください。
まとめ
- GitとGitHubの接続方法の手順を記した。
これを完了すれば、ローカルとリモートでのバージョン管理をSSH接続で安全に行えるようになる。
参考にさせていただきました
GitとGitHubの基本操作・概念整理
-
GitHub リモートリポジトリの管理方法(公式)
git remote
の使い方について参考 -
新しいリポジトリの作成方法(公式)
GitHub上でのリポジトリ作成手順に使用 -
README の解説(公式)
README.md の意味と用途に使用 -
.gitignore
について(公式)
無視ファイルのテンプレ選択に関して -
リポジトリの公開範囲設定(公式)
Public / Private の違いの説明に使用 -
リポジトリのベストプラクティス(公式)
設定における注意点を確認 -
ユーザー名の設定方法(公式)
git config
の参考に使用 -
初期化の意味(e-Words)
git init
の説明文作成に利用 -
Gitのインストール(公式)
Windows版Gitのインストールに利用 -
GitHubのアカウントを作る(公式)
GitHubのアカウント作成に利用
SSH鍵・接続・セキュリティ
-
GitHubのセキュリティ強化に関する発表(公式)
ed25519推奨の背景に利用
エラー・実践ノウハウ
ライセンス関連
- MITライセンスとは?(yamory)
- GPLライセンスとは?(yamory)
-
GitHubリポジトリへのライセンス設定(公式)
→ 各ライセンスの概要紹介に利用
メタ構文変数の補足
- メタ構文変数とは(ニコニコ大百科)
-
hoge の意味(ニコニコ大百科)
hoge
などの使い方の説明に使用