GitHub 上のリポジトリのフォーク、プッシュ、プルリクエスト

このページでは、GitHub 上の他のユーザーのリポジトリのソースファイルに修正を加え、その修正を該当ユーザーに取り込んでもらう手順について説明します。

前提知識

Git 環境の構築、および GitHub 上の自分のリポジトリへのコミットやプッシュが行える環境はすでに構築されているものとします。 環境の構築方法については、以下のページを参照してください。

他のユーザーのリポジトリのソースファイルを修正する

ここでは Symfony ユーザー会のコンテンツリポジトリを例に説明します。 まず、修正を行いたいソースが含まれているリポジトリを、ローカルコンピューターへ clone します。 この操作により、対象リポジトリがローカルにコピーされます。

$ git clone git://github.com/hidenorigoto/sfjp-doc-main.git

このコマンドを実行すると、sfjp-doc-main というディレクトリが作られ、その中にリポジトリのファイルがコピーされます。

編集したいファイルがあれば編集し、追加したいファイルがあれば追加します。

その後、以下の 2 つの手順でローカルのリポジトリに対して変更をコミットします。

$ git add .
$ git commit -m 'updated documentation'

1 つ目のコマンドでは、カレントディレクトリ配下で変更のあったファイルをすべて「コミット対象」としてマークします。これを「ステージングする」といいます。 2 つ目のコマンドでは、ステージングされたファイルの変更をコミットします。-m の後にコミットメッセージを入力します。

NOTE Git では、コミット対象のステージング、コミットの処理は完全にローカルのリポジトリのみで完結します。 ですので、コミット処理が非常に軽く、手軽に行えます。

ローカルのリポジトリでコミットを繰り返して変更を蓄積し、修正を完成させていきます。

修正の反映用に GitHub 上でリポジトリをフォークする

通常は、他のユーザーのリポジトリを直接更新することはできません。 まずは、対象リポジトリをフォークして、GitHub 上で自分用のリポジトリとして分岐させます。 例えば Symfony ユーザー会のメインコンテンツリポジトリをフォークする場合は、hidenorigoto / sfjp-doc-main へアクセスし、「フォーク」というボタンをクリックします。これで、自分のダッシュボードに戻ると sfjp-doc-main というリポジトリが表示されます。

フォークしたリポジトリへプッシュする

では、ローカルに蓄積した変更を、自分用のリポジトリへプッシュしましょう。

プッシュなどの操作を行うには、ローカルのリポジトリに対象リポジトリを登録する必要があります。以下のコマンドで、対象リポジトリを登録できます。

$ git remote add yourname git@github.com:yourname/sfjp-doc-main.git
# yourname の部分はお使いの GitHub アカウント名に置き換えてください。

これで、「リモート」の一覧として yourname リポジトリが追加されました。登録されているリモートの一覧を確認するには、以下のコマンドを実行します。

$ git remote -v

ここまで準備ができたら、実際に「プッシュ」します。ローカルで作業しているブランチが master の場合、以下のコマンドを実行します。

$ git push yourname master

プッシュが完了したら、GitHub 上のリポジトリページへアクセスして、変更が取り込まれていることを確認してください。

プルリクエストを送信する

プルリクエストとは、「あなたのリポジトリのソースを更新したから、取り込んでください」と GitHub 上で連絡する手段です。 プルリクエストを送信しなくても、こちらの更新を相手が取り込むことはできます。

プルリクエストを送信するには、GitHub 上のリポジトリページへアクセスして、「プルリクエスト」ボタンをクリックします。 どのような変更を行ったのかをメッセージ欄に入力し、送信対象をチェックして「Send」ボタンを押すと、プルリクエストが送信されます。