Pull Request(プルリクエスト)は、ソフトウェア開発において、コードの変更や追加を管理し、コードベースに統合するための手法の1つです。
以下にPull Requestの基本的な流れと概念を説明します。
ブランチの作成: プロジェクトのコードベースは通常、メインブランチ(例:master、main)と呼ばれるブランチで管理されています。新しい機能や修正を行う際には、このメインブランチから新しいブランチを作成します。このブランチには変更を加えていくことになります。
コードの変更: 作成した新しいブランチで、コードの変更や追加を行います。バグ修正、新機能の実装、ドキュメントの更新などが含まれます。
コミットとプッシュ: 変更が必要な範囲でコミットを行い、変更内容をローカルリポジトリに記録します。その後、変更内容をリモートリポジトリにプッシュして共有します。
Pull Requestの作成: プルリクエストを作成するために、変更が行われたブランチをリモートリポジトリにプッシュします。プルリクエストは、他の開発者に変更内容を確認してもらい、メインブランチへの統合を依頼する手段です。
レビューとディスカッション: プルリクエストを受けた他の開発者は、コードの変更内容を確認し、コメントや提案を行うことができます。コードの品質やセキュリティ、機能の実装方法などに関する議論が行われることがあります。
変更の修正: レビューを受けた後、プルリクエストの作成者は、コメントや指摘事項に対処してコードを修正します。修正内容はコミットとして追加され、プルリクエストに反映されます。
マージ: レビューと修正が完了したら、プルリクエストをマージ(統合)します。変更内容がメインブランチに取り込まれ、プロジェクト全体に反映されます。
Pull Requestの利点は、複数の開発者が協力してコードの品質を向上させることができる点です。また、コードの変更を追跡し、問題が発生した場合にも修正を追加することが容易です。プルリクエストを通じてコードの変更内容が明確になり、チーム全体で協力して効率的なソフトウェア開発が行えるようになります。
Pull Requestを送る準備
対象のリポジトリのページにアクセスしてForkボタンを押して自分のリポジトリを作成。
リポジトリをcloneする。
branch
トピックブランチで作業する理由
Pull Requestでのトピック(テーマ)が明確になり、コードの変更の糸の共有がレビュアと行いやすくなるため、コードレビューが効果的に行えます。
// レビュア(Reviewer)は、コードやドキュメントなどの変更を審査し、評価やコメントを提供する人
ブランチを確認する。
$ git branch -a
* gh-pages
remotes/origin/HEAD -> origin/gh-pages
remotes/origin/gh-pages
remotes/origin/いかに表示されているブランチがGithubにあるリポジトリです。手元の開発環境にはgh-pagesブランチしかないのが確認できる。
トピックブランチを作成する
Pull Requestを送るためのブランチworkを作成します。切り替えも行う
git checkout -b work gh-pages
git checkout:これは、Gitリポジトリ内で異なるブランチや
コミット間を切り替えるために使用されるコマンドです。
-b work:この部分は、新しいブランチ「work」を作成することを指定しています。
-bフラグは、新しいブランチを作成することを示します。
gh-pages:これは、新しい「work」ブランチを作成する際の元となる既存のブランチの名前です。
Gitでは、既存のブランチを基に新しいブランチを作成することが一般的です。
要約すると、git checkout -b work gh-pages コマンドは、
現在の「gh-pages」ブランチの状態を元にして新しい「work」ブランチを作成し
、それに切り替えるものです。
これは、「gh-pages」ブランチに直接影響を与えずに、
新しい機能を開発したり変更を加えたりする際に役立ちます。
コードを追加
変更をコミット
リモートブランチの作成
GithubからPull Requestを送るためには、Github側のリポジトリに修正を加えたブランチがある必要がある。手元のworkに相当するブランチを作ります。
$ git push origin work
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 363 bytes | 363.00 KiB/s, done.
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote:
remote: Create a pull request for 'work' on GitHub by visiting:
remote: https://github.com/okuyama-code/first-pr/pull/new/work
remote:
To https://github.com/okuyama-code/first-pr.git
* [new branch] work -> work
翻訳
$ git push origin work
オブジェクトの列挙: 5、完了。
オブジェクトのカウント: 100% (5/5)、完了。
最大 12 スレッドを使用したデルタ圧縮
オブジェクトの圧縮: 100% (3/3)、完了。
オブジェクトの書き込み: 100% (3/3)、363 バイト | 363.00 KiB/s、完了。
合計 3 (デルタ 2)、再利用 0 (デルタ 0)、パック再利用 0
リモート: デルタの解決: 100% (2/2)、2 つのローカル オブジェクトで完了。
リモート:
リモート: 以下にアクセスして、GitHub で「work」のプル リクエストを作成します。
リモート: https://github.com/okuyama-code/first-pr/pull/new/work
リモート:
https://github.com/okuyama-code/first-pr.git へ
* [新しいブランチ] work -> work