[Git]Git と GitHub との連携
公開日:2026-01-02
更新日:2026-01-02
更新日:2026-01-02
1. 概要
Git と GitHub を連携します。
2. 鍵の作成
Mintty で次のコマンドを実行して GitHub に接続するための鍵を作成します。
Windows の場合、C:/Users/{ユーザ名}/.ssh に作成することが多いです。
コマンドを実行すると、途中でパスフレーズを聞かれます。
パスフレーズは12文字以上のランダムな英数字を設定しておくと、鍵が盗まれた場合でも、即座に悪用されることを防げます。
コマンド
ssh-keygen -t ed25519 パスはコマンド実行後に聞かれる
ssh-keygen -t ed25519 -f {パス} パスを指定して鍵を作成。
(例) ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519
Windows の場合、C:/Users/{ユーザ名}/.ssh に作成することが多いです。
コマンドを実行すると、途中でパスフレーズを聞かれます。
パスフレーズは12文字以上のランダムな英数字を設定しておくと、鍵が盗まれた場合でも、即座に悪用されることを防げます。
3. ssh-agent の設定
3.1 概要
鍵にパスフレーズを設定している場合、鍵を使用する際に、パスフレーズを入力する必要があります。
ssh-agent を使用すると、パスフレーズを自動入力することができます。
次のコマンドを実行して、「Could not open a connection to your authentication agent.」と表示される場合は、ssh-agent の設定をする必要があります。
ssh-agent を使用すると、パスフレーズを自動入力することができます。
次のコマンドを実行して、「Could not open a connection to your authentication agent.」と表示される場合は、ssh-agent の設定をする必要があります。
コマンド
ssh-add -l3.2 ssh-agent の起動
コマンド
eval "$(ssh-agent -s)"3.3 ssh-agent に鍵の登録
コマンド
ssh-add {秘密鍵のパス} (例) ssh-add ~/.ssh/id_ed25519
実行すると鍵のパスフレーズを聞かれるので入力してください。3.4 ssh-agent を自動起動にする
Mintty で bash を起動すると、~/.bash_profile により、.bashrc が存在する場合は、.bashrc が実行されます。
~/.bashrc を作成して、ssh-agent の起動と鍵の登録を自動化します。
~/.bashrc をメモ帳などで作成する。
Mitty を起動すると、最初に鍵のパスフレーズを聞かれますが、それ以降は Mitty を終了するまで、パスフレーズが自動入力されます。
~/.bashrc を作成して、ssh-agent の起動と鍵の登録を自動化します。
~/.bashrc をメモ帳などで作成する。
コード
echo '.bashrc'
# ssh-agent の起動
eval "$(ssh-agent -s)"
# 鍵の登録
ssh-add ~/.ssh/id_ed25519
Mitty を起動すると、最初に鍵のパスフレーズを聞かれますが、それ以降は Mitty を終了するまで、パスフレーズが自動入力されます。
4. GitHub に公開鍵の登録
GitHubにアクセスする。
GitHub の右上の自分のアイコンをクリック ->「Settings」-> 左のメニューの「SSH and GPG keys」-> 「New SSH key」
Title は何でも良い、Key type は「Authntication Key」、
Key に、作成した公開鍵(id_ed25519.pub など)の内容をコピーして、張り付ける。(メモ帳で開くと先頭が ssh-ed25519 で始まっている)
「Add SSH key」をクリックすると、公開鍵が登録される。
GitHub の右上の自分のアイコンをクリック ->「Settings」-> 左のメニューの「SSH and GPG keys」-> 「New SSH key」
Title は何でも良い、Key type は「Authntication Key」、
Key に、作成した公開鍵(id_ed25519.pub など)の内容をコピーして、張り付ける。(メモ帳で開くと先頭が ssh-ed25519 で始まっている)
「Add SSH key」をクリックすると、公開鍵が登録される。
5. GitHub でリポジトリを作成して、ローカルのリポジトリと関連付ける
GitHub の Dashboard の左上の「New」、または右上の「+」->「New repository」をクリック。
Repository name を「test1」(リポジトリ名)、
Choose visibility を「Private」(非公開)にして、
「Create repository」をクリックするとリポジトリが作成されます。
作成後、次のように表示されるので、「SSH」をクリックしてください。

コマンドが 2 つ表示されるので、どちらかを実行すると、GitHub のリポジトリと連携できるようになります。
ローカルにリポジトリがない場合
ローカルに既にリポジトリがある場合
この段階では、main ブランチと上流ブランチ(リモートリポジトリのブランチ)の関連付けは行われていません。
.git/config に次の内容が追加されます。
次回からは「git push」だけでプッシュできます。
但し、新しくブランチを作成した場合は、また「git push -u origin {ブランチ名}」を実行する必要があります。
.git/config に次の内容が追加されます。
また、push とは逆に 上流ブランチの内容をローカルに反映するには、pull を使います。
Repository name を「test1」(リポジトリ名)、
Choose visibility を「Private」(非公開)にして、
「Create repository」をクリックするとリポジトリが作成されます。
作成後、次のように表示されるので、「SSH」をクリックしてください。

コマンドが 2 つ表示されるので、どちらかを実行すると、GitHub のリポジトリと連携できるようになります。
ローカルにリポジトリがない場合
コマンド
echo "# test1" >> README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:{GitHub のユーザ名}/test1.git
git push -u origin main
ローカルに既にリポジトリがある場合
コマンド
git remote add origin git@github.com:{GitHub のユーザ名}/test1.git
git branch -M main
git push -u origin main上記コマンドの説明
コマンド
git branch -M main
ブランチ名を main に変更します。元々 main の場合は実行する必要はありません。コマンド
git remote add origin git@github.com:{GitHub のユーザ名}/test1.git
origin に GitHub 上のリポジトリの住所となるリモートURL「git@github.com:{GitHub のユーザ名}/test1.git」を設定します。この段階では、main ブランチと上流ブランチ(リモートリポジトリのブランチ)の関連付けは行われていません。
.git/config に次の内容が追加されます。
コード
[remote "origin"]
url = git@github.com:{GitHub のユーザ名}/test1.git
fetch = +refs/heads/*:refs/remotes/origin/*
コマンド
git push -u origin main
origin/main を main ブランチの上流ブランチ(-u : upstream)として設定してから、プッシュ(上流ブランチに変更の送信)します。次回からは「git push」だけでプッシュできます。
但し、新しくブランチを作成した場合は、また「git push -u origin {ブランチ名}」を実行する必要があります。
.git/config に次の内容が追加されます。
コード
[branch "main"]
remote = origin
merge = refs/heads/main
これで、main ブランチの上流ブランチとして、origin(git@github.com:{GitHub のユーザ名}/test1.git)の関連付けが行われます。また、push とは逆に 上流ブランチの内容をローカルに反映するには、pull を使います。
コマンド
git pull6. git pull の動作について
git pull は、次のコマンドと同じ内容になります。
git fetch は、上流ブランチから最新情報をダウンロードします。
そして、origin/main ブランチのポインタが、リモートの main ブランチの最新コミットを指すようになります。
次に、git merge origin/main で、origin/main ブランチを現在のブランチにマージします。
これで、上流ブランチの内容がローカルに反映されます。
また、引数が origin/main となるのは、現在のブランチの上流ブランチが origin/main と設定されているため、自動的に指定されます。
コマンド
git fetch
git merge origin/main
git fetch は、上流ブランチから最新情報をダウンロードします。
そして、origin/main ブランチのポインタが、リモートの main ブランチの最新コミットを指すようになります。
次に、git merge origin/main で、origin/main ブランチを現在のブランチにマージします。
これで、上流ブランチの内容がローカルに反映されます。
また、引数が origin/main となるのは、現在のブランチの上流ブランチが origin/main と設定されているため、自動的に指定されます。
7. リモートリポジトリのクローンの作成
空のフォルダで次のコマンドを実行すると、リモートリポジトリのクローンの作成できます。
コマンド
git clone git@github.com:{ユーザ名}/test1.git
上流ブランチの設定も行われるため、プッシュやプルが行えます。8. ブランチの呼び名
リモートリポジトリ
GitHub などリモートにあるリポジトリ
リモートブランチ
GitHub などリモートにあるリポジトリのブランチ
リモート追跡ブランチ
リモートリポジトリのブランチと同じコミット ID を参照するための origin/main などのブランチのこと。
直接リモートのブランチを参照している訳ではない。
git fetch ででリモートリポジトリのファイルをローカルにダウンロードして、リモートと同じ状態をローカルに再現し、
リモートリポジトリのブランチが指すコミット ID を、origin/main に設定する。
これにより origin/main から、リモートリポジトリのブランチから見るのと同じように見ることができる。
直接リモートのブランチを参照している訳ではない。
git fetch ででリモートリポジトリのファイルをローカルにダウンロードして、リモートと同じ状態をローカルに再現し、
リモートリポジトリのブランチが指すコミット ID を、origin/main に設定する。
これにより origin/main から、リモートリポジトリのブランチから見るのと同じように見ることができる。
追跡ブランチ
上流ブランチを持つローカルブランチです。リモート追跡ブランチとは異なります。
例えば、origin/main を上流ブランチとして持つ main ブランチのことです。
上流ブランチが設定されていないローカルだけのブランチは、追跡ブランチではありません。
例えば、origin/main を上流ブランチとして持つ main ブランチのことです。
上流ブランチが設定されていないローカルだけのブランチは、追跡ブランチではありません。

