以前、WSLでCodexをセットアップする手順は次の記事で紹介しました。

WSLのCodexでセットアップする記事では、WSLとGitHubの接続について説明していなかったので、今回、WSLからGitHubに接続するための設定手順を紹介します。
Codexを使ってコード生成を始める前に、SSHとGitの設定を整えておくと、後の作業をスムーズに進められます。
私はVSCodeを利用して操作しましたが、コマンドラインでも同様の結果を得られます。

ここでは、SSH設定からGitの初期設定、リポジトリのクローン、README.mdの登録までの流れを順を追って説明します。
最後に、Pythonプロジェクトに初期登録したほうがよいファイルをまとめたテンプレートリポジトリも紹介しています。
本記事の内容は2025年11月に確認した内容です。
なお、本記事で紹介するコマンド等は個人で使用しているPCの設定、メールアドレスが含まれているため、一部を置き換えたり、ぼかしを入れたりしています。

この記事で分かること

  • SSH接続を使ってGitHubに接続する方法
  • Gitの初期設定と推奨構成
  • WSLでリポジトリをクローンして確認する手順
  • README.mdを登録して初回コミットを行う方法
  • Pythonプロジェクトに必要な初期設定

WSLでGitHub連携を行う前に準備するもの

Ubuntuが利用できる状態であることを確認する

GitHubとの連携設定は、WSL上のUbuntuで行います。
この記事では、すでにUbuntuがインストール済みであることを前提に進めます。
まだ導入していない場合は、次の記事を参照してください。

Gitがインストールされているか確認する

続いて、Gitが使えることを確認します。
WSLのターミナルで次のコマンドを実行してください。
Ubuntuを通常にインストールしていればGitはインストールされています。

git --version
# 次のように表示されることを確認します
git version 2.43.0

バージョン情報が表示されれば準備完了です。
もしインストールされていない場合は、次のコマンドで追加します。

sudo apt install git -y

この手順を終えると、GitHubに接続するための準備が整います。

GitHubとの接続方式はSSHを使う

なぜSSHが推奨なのか

GitHubとの接続方法には、HTTPSとSSHの2種類があります。
HTTPSは初期設定が簡単で導入しやすい方法ですが、アクセスするたびにトークンを入力する必要があり、作業のたびに少し煩雑になります。
一方のSSHは、初回に鍵を登録しておくだけで自動的に認証され、パスワード入力の手間がなくなります。
セキュリティ面でも信頼性が高く、安定した開発環境を維持しやすい点も魅力です。
そのため、長期的にプロジェクトを運用する場合は、SSH接続を採用するのが適しています。

SSHキーを作成する

SSH接続を利用するには、公開鍵と秘密鍵のペアを作成する必要があります。
WSLのターミナルで次のコマンドを実行します。
「your_email@example.com」の箇所は利用するメールアドレスに置き換えてください。

ssh-keygen -t ed25519 -C "your_email@example.com"

実行すると次のように表示されます。
保存先の入力を求められたら、そのままEnterキーを押してください。
そのあと、パスフレーズ(passphrase)の入力を求められます。
パスフレーズを設定した場合、SSHを使用する際、毎回パスフレーズの入力が求められます。
私は毎回入力するのが手間なので、パスフレーズは設定していません。

Enter file in which to save the key (/home/xxxx/.ssh/id_ed25519): 
Created directory '/home/xxxx/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/xxxx/.ssh/id_ed25519
Your public key has been saved in /home/xxxx/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com
The key's randomart image is:
+--[ED25519 256]--+
|     ..*o   .o.  |
|    . *+.. o ..oE|
|     . =* o o =.+|
|     . +o+.+ = ..|
|    o + S.o.= + +|
|   . +   o o.o o+|
|    .     ..    =|
|            .  .=|
|             ..o |
+----[SHA256]-----+

作成が完了すると、~/.ssh/ ディレクトリに次の2つのファイルが生成されます。

ls ~/.ssh
id_ed25519  id_ed25519.pub

生成されたファイルは次の2つです。
秘密鍵は絶対に他人に渡さない、外部にアップしないでください。
秘密鍵を他に使用されると、あなたになりすましてGithub上のいろいろな操作ができます。

ファイル名説明
id_ed25519秘密鍵(他人に渡さない)
id_ed25519.pub公開鍵(GitHubに登録する)

SSHエージェントの起動と鍵登録

秘密鍵にパスフレーズを設定していない場合は、この設定を行わなくても接続は可能です。
ただし、パスフレーズ付きの鍵や複数の鍵を使う場合は、SSHエージェントの設定を行うと便利です。

SSHキーを作成したあと、その鍵をSSHエージェントに登録しておくと便利です。
エージェントは、秘密鍵を一時的にメモリ上で保持してくれるプログラムです。
これを設定しておくことで、GitHubへの接続時に毎回パスフレーズを入力する必要がなくなります。

まず、SSHエージェントを起動します。
WSLのターミナルで次のコマンドを実行します。

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

# 実行すると次のように表示されます
Agent pid 4623
Identity added: /home/xxxx/.ssh/id_ed25519 (your_email@example.com)

これでGitHubへの接続時に、登録した鍵が自動的に利用されるようになります。

WSLを再起動したあとも自動でエージェントを起動したい場合は、次のコマンドを実行してホームディレクトリの .bashrc ファイルの末尾に追加しておくと便利です。

eval "$(ssh-agent -s)" >/dev/null
ssh-add ~/.ssh/id_ed25519 2>/dev/null

これにより、WSLを起動するたびにSSHエージェントが自動的に立ち上がり、鍵も登録されます。

なお、VSCodeや一部の環境ではSSHエージェントが自動で管理されており、この手順を省略しても接続できる場合があります。
ただし、確実に動作させたい場合は上記の手順を一度実行しておくと安心です。

SSHキーをGitHubに登録する

次に、作成した公開鍵をGitHubに登録します。
WSLのターミナルで次のコマンドで内容を表示し、コピーしてください。

cat ~/.ssh/id_ed25519.pub

# 次のように表示されるのでコピーします
ssh-ed25519 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx your_email@example.com

コピー後、GitHubにログインし、右上のアイコンから「Settings」→「SSH and GPG keys」→「New SSH key」を選択します。

タイトルを入力して公開鍵を貼り付け、「Add SSH key」をクリックします。

公開鍵の登録が成功すると次のように表示されます。
(個人設定のため、登録内容の一部は黒塗りにしています。)

登録が完了したら、接続テストを行います。
WSLのターミナルで次のコマンドを実行します。
初回実行のため、「Are you sure you want to continue connecting・・・」が表示されるので、yesを入力します。
2回目以降は「Hi username! You’ve successfully authenticated・・・」だけが表示されます。

ssh -T git@github.com

# 次のように表示されれば正常に接続できています
ssh -T git@github.com
The authenticity of host 'github.com (20.27.177.113)' can't be established.
ED25519 key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi username! You've successfully authenticated, but GitHub does not provide shell access.

Gitの初期設定を行う

コミット情報の設定

Gitでコミットを行う際に使用されるユーザー名とメールアドレスを設定します。
WSLのターミナルで次のコマンドを実行します。
user.name、user.emailは使用するものに置き換えてください。

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

チームで開発を行う場合、メールアドレスを公開したくないときは、GitHubが提供する匿名アドレス(例:username@users.noreply.github.com)を使用すると安全です。

Gitの推奨設定

Gitの動作を安定させ、履歴をわかりやすく保つために、次の設定を行うことを推奨します。
WSLのターミナルで次のコマンドを実行します。

# --- 基本情報 ---
git config --global user.name  "Your Name"
git config --global user.email "your_email@example.com"
git config --global init.defaultBranch main

# --- 改行コードと安全 ---
git config --global core.autocrlf input     # 受け取り時にCRLF→LF(WSL/Linux推奨)
git config --global core.safecrlf warn      # 危険な改行変換を警告

# --- 取得・履歴ポリシー(チーム運用版/安全) ---
git config --global pull.rebase false       # 共有ブランチでのrebase自動化はしない
git config --global merge.ff only           # fast-forward可能時のみmerge許可(ノイズ抑制)
git config --global fetch.prune true        # 消えたリモート枝を自動掃除

# --- 表示と快適さ ---
git config --global color.ui auto
git config --global log.date iso            # ISO形式でログを時系列に読みやすく
git config --global diff.renames true       # リネーム検知を賢く

# --- 署名(Verifiedバッジ用:SSH署名が手軽)---
git config --global gpg.format ssh
git config --global user.signingkey ~/.ssh/id_ed25519.pub
git config --global commit.gpgsign true     # 以後のコミットに自動署名

# --- エディタ/マージツール(VS Code派) ---
git config --global core.editor "code --wait"
# 例:vim派なら  git config --global core.editor "vim"
# 例:nano派なら git config --global core.editor "nano"

# --- 事故防止(任意)---
# HTTPS URLを誤貼りしてもSSHに置換:push時の認証で迷子にならない
# git config --global url."git@github.com:".insteadOf "https://github.com/"

# --- 大規模リポ対策(任意)---
git config --global maintenance.auto true   # バックグラウンド最適化(git>=2.35)
git config --global gc.auto 256             # 自動GCの閾値をやや引き上げ

これらの設定により、改行コードの混在や不要なマージコミットを防げます。
履歴の読みやすさも向上するため、初期段階で設定しておくのが理想的です。

正常に設定できたことは次のコマンドで確認します。

git config --global --list

# 正常に設定されていると次のように表示されます
user.name=Your Name
user.email=your_email@example.com
user.signingkey=/home/xxxx/.ssh/id_ed25519.pub
init.defaultbranch=main
core.autocrlf=input
core.safecrlf=warn
core.editor=code --wait
pull.rebase=false
merge.ff=only
fetch.prune=true
color.ui=auto
log.date=iso
diff.renames=true
gpg.format=ssh
commit.gpgsign=true

リポジトリをクローンして確認する

GitHub上に作成済みのリポジトリを、WSLにクローンして確認します。
SSH接続を設定している場合は、WSLのターミナルで次のコマンドを実行します。
username、yourrepositoryは使用しているユーザー、リポジトリ名に置き換えてください。

git clone git@github.com:username/yourrepository.git
Cloning into 'yourrepository'...
warning: You appear to have cloned an empty repository.

クローンが完了し、リポジトリの内容が次のように表示されれば成功です。

# リポジトリのディレクトリに移動して、gitのディレクトリがあれば正常にクローンされています
cd yourrepository
ls -a
.  ..  .git

初回登録を行う

次に、プロジェクトの概要を記載するREADME.mdを作成し、GitHubに登録します。
WSLのターミナルで次のコマンドを実行します。

echo "# プロジェクト名" > README.md
git add README.md
git commit -m "add README"
git push origin main

これでGitHub上に次のように表示されれば初回のコミットが反映されます。

Gitのコマンド操作が難しい場合、VSCodeの「ソース管理」機能を使えば、画面操作だけで同様の作業が可能です。
私は、VSCodeの画面操作でGit操作を可能な限り行い、画面操作できない場合はGitのコマンドで使っています。

VSCodeの「ファイル」→「フォルダを開く」で、クローンしたGitのディレクトリを選択します。
選択後、「ファイル」→「新しいファイル」を選択してREADME.mdを作成します。
※私の環境は英語表示になっていますが、画面の操作は一緒です。

変更をステージに設定します。

コミットメッセージを入力してコミットします。

最後に「変更を同期」をクリックすれば完了です。
初回の場合、「ブランチを公開」をクリックします。

Pythonプロジェクトの初期設定を行う

Pythonで開発を進める場合は、次のファイルを最初に準備しておくと、あとから環境を整える手間を省けます。
これらのファイルを整備しておくことで、プロジェクトの意図を明確にし、キャッシュや仮想環境フォルダを誤ってコミットすることを防ぎ、また改行コードの違いによる不具合も回避できます。
ファイル名をクリックすると、私が公開しているンプレートリポジトリの該当ファイルを開き、そのまま内容を確認・利用できます。

ファイル名主な役割内容・ポイント
README.mdプロジェクトの概要を説明するファイル目的、動作環境、セットアップ手順などを記載します。GitHubのトップページに自動で表示されるため、最初に整備しておくとプロジェクトの印象が良くなります。
.gitignoreGitで管理しないファイルを指定する設定仮想環境フォルダ(.venv/, .uv/)やビルド成果物(dist/, build/)を除外します。キャッシュや一時ファイルをコミットしないようにする重要な設定です。
.gitattributes改行コードや文字コードなど、Gitの動作を制御する設定改行コードをLFに統一し、画像や実行ファイルをバイナリとして扱います。WindowsとWSLなど異なる環境で開発しても、差分が発生しにくくなります。

これらの設定を整えておくことで、環境差異のない安定したPythonプロジェクトを構築できます。
特にチーム開発や長期運用を想定している場合、最初に設定しておくことで後のトラブルを未然に防げます。

まとめ

この記事では、WSLからGitHubへ接続するための手順を順を追って紹介しました。
SSHキーの設定からGitの初期設定、リポジトリのクローン、README.mdの登録までを行えば、開発を始めるための環境が整います。
ここまで準備を済ませておくことで、Python開発やCodexとの連携作業を円滑に進められます。
今後は、この環境を活用してCodexでPythonコードを自動生成する方法を紹介する予定です。