コンテンツにスキップ

WSL上で2人のユーザーになりきってプルリクエストの練習

[質問]

WSLに2つのアカウントをつくり、それぞれが別個にGitHubアカウントを取得した環境を作ります。一人目がGitHubにpull requestを送ったり二人目がそれを解決する勉強がしてみたいです。どんな順番で学習を進めればいいか、アドバイスをください。

[回答] Gemini

WSL上で2人のユーザーになりきってプルリクエスト(PR)のフローを練習するのは、Gitの仕組みを理解する上で非常に素晴らしいアイデアですね!

1台のPCで完結させるため、「アカウントの切り替え」「権限設定」が鍵になります。以下のステップで進めるのがスムーズです。


ステップ1:WSL内に2つのユーザーを作成する

まずは「自分」と「練習用の相手」の2つのユーザーをWSL上に作ります。

  1. ユーザー追加: sudo adduser user2 で新しいユーザーを作成します。
  2. 切り替え確認: su - user2 でユーザーを切り替えられるか確認しましょう。
  3. whoami コマンドで今どっちのユーザーか確認する癖をつけると混乱を防げます。

ステップ2:GitHubアカウントとSSH鍵の準備

ここが一番の山場です。GitHubは「誰がアクセスしているか」をSSH鍵で判断します。

  1. 2つのGitHubアカウント: 異なるメールアドレスでGitHubアカウントを2つ用意します。
  2. SSH鍵の生成: * User1のホームディレクトリで鍵を作り、GitHub1に登録。
  3. User2のホームディレクトリで鍵を作り、GitHub2に登録。

注意点: WSLのユーザーを切り替えれば、それぞれの ~/.ssh/ フォルダは独立しているため、鍵が混ざる心配はありません。


ステップ3:リポジトリの準備(一人目の作業)

いよいよGit操作に入ります。

  1. User1: GitHub上に「練習用リポジトリ」を作成(Public)。
  2. User1: ローカルに git clone して、適当なファイルを作って push します。

ステップ4:Fork と Pull Request(二人目の作業)

ここから「共同作業」のシミュレーションです。

  1. User2: GitHub上で User1のリポジトリにアクセスし、「Fork」ボタンを押します。これで User2側の管理下にコピーが作られます。
  2. User2 (WSL): Forkした自分のリポジトリを git clone します。
  3. User2 (WSL): コードを修正し、commit して push します。
  4. User2 (GitHub): ブラウザから 「New Pull Request」 を作成し、User1に送ります。

ステップ5:レビューとマージ(一人目の作業)

最後は受け入れ作業です。

  1. User1 (GitHub): 届いたPRを確認します。「Files changed」で修正箇所を見て、コメントを返したりします。
  2. User1 (GitHub): 問題なければ 「Merge pull request」 をクリック!
  3. User1 (WSL): git pull origin main を実行して、User2が直したコードが自分の手元にも反映される感動を味わいましょう。

学習をスムーズにするコツ

  • ブラウザのプロファイル機能: ChromeやEdgeの「プロファイル(ユーザー)」を2つ分けると、GitHubのログアウト・再ログインの手間が省けて劇的に楽になります。
  • configの設定: 各ユーザーのWSL内で必ず以下を設定してください。
    git config --global user.name "Your Name"
    git config --global user.email "your_email@example.com"
    

これを忘れると、コミットログのアイコンが別人になってしまいます。

まずはステップ1の「ユーザー追加」と、ステップ2の「SSH接続の確立」から始めてみませんか?もしSSH鍵の設定で詰まったら、いつでも聞いてくださいね。