【Git&Github】Gitのプルリクエスト(pull request)からマージ(marge)までのプロセスをわかりやすく解説
プルリクエスト(pull request:PR)とは
マージ(marge)とは
プルリクエストからマージまでのプロセス
1. 使用中ローカルブランチを確認
git branch
$ git branch
develop
* feature
main
2. 編集作業を行う
<div>
<h1>プルリクエストのテスト</h1>
</div>
3. 変更をステージングしてリモートブランチにプッシュ
git add .
git commit -m "[Add] プルリクエストのテスト"
git push -u origin feature
4. プルリクエストを作成
4-1.GitHubリポジトリページにアクセスする。
4-2.「Pull requests」タブをクリックし「New pull request」ボタンをクリック。
4-3.ブランチ(baseとcompare)を選択。(今回はfeatureを選択)
4-4.「Create pull request」ボタンをクリックします。
4-5.タイトルと詳細欄を入力し、(説明欄には、変更の背景、目的、特記などを記述)「Create pull request」をクリックしてPRを送信する。
※必要であればレビュワー,ラベル,プロジェクト,マイルストーンの追加する。
レビュワー,ラベル,プロジェクト,マイルストーンについて
【レビュワーの追加】(GithubのSettingsからcollaboratorとしてレビュワーをリポジトリへ招待しておく必要がある)
【ラベル】
・Labelsは、Issueやプルリクエストをカテゴリ分けし、その性質や状態を示すためのタグ。
【プロジェクト】
・Issueやプルリクエストを整理し、進捗を追跡するためのツール。
【マイルストーン】
・プロジェクトの重要な節目や目標を設定し、関連するIssueやプルリクエストをグループ化するための機能
GitHubのデフォルトラベルとその一般的な用途
bug: ソフトウェアの不具合や予期しない動作を報告する際に使用。
documentation: ドキュメントの追加や更新が必要な場合に使用。
duplicate: 既存のIssueやプルリクエストと重複している場合に使用。
enhancement: 既存の機能の改善や拡張を提案する際に使用。
good first issue: 初めてプロジェクトに貢献する人向けの、比較的簡単なタスクを示す。
help wanted: コミュニティからの支援や貢献を求める際に使用。
invalid: Issueやプルリクエストが不適切または関連性がない場合に使用。
question: さらなる情報や明確化が必要な場合に使用。
wontfix: 対応しないと決定されたIssueに使用。
カスタムラベルの例:
priority: high/medium/low: タスクの優先度を示す。
status: in progress/review needed: タスクの現在の状態を示す。
type: feature/refactor: 変更の種類を示す。
version: v1.0/v2.0: 関連するソフトウェアのバージョンを示す。
area: frontend/backend/database: 変更が影響する領域を示す。
5. 内容に修正が必要になった場合の対応(無ければ6へ)
5-1.GitHubの「Pull Requests」タブし、該当するプルリクエストを選択する。
5-2.「File changes」を選択し、変更内容をレビューする。
5-3.レビュー者が+アイコンをクリックし、コメントを入れている(具体的な変更点や改善点が指摘されている)ため、そちらを確認する。
5-4.プルリクエストを作成したブランチに切り替える。
git checkout feature
$ git checkout feature
Switched to branch 'feature'
Your branch is up to date with 'origin/feature'.
$ git branch
develop
* feature
main
5-5.レビュー(5-3)で指摘を受けた通りにファイルを編集する。
<div>
<h1>プルリクエストのテスト</h1>
</div>
<div>
<p>確認しました</p>
</div>
5-6.変更をステージングしてリモートブランチにプッシュする。
git add .
git commit -m "[Update] <p>タグの追加"
git push -u origin feature
5-7.プッシュした変更内容が反映されているか確認する。
レビュワーの依頼通り確認しましたを追加している
6. プルリクエストのマージ
6-1.プルリクエストを開き該当するリクエストをクリックする。
6-2.「Merge pull request」ボタンをクリックする。
6-3.「Confirm merge」ボタンをクリックしてマージを完了する。
3種類のマージリクエスト方法について
6-4.そのブランチが必要なければ「Delete branch」をクリックする。
プルリクエストのマージを【ターミナル上で行う場合】
6-1.現在のブランチを確認する。
git branch
$ git branch
develop
* feature
main
6-2.マージしたいブランチに切り替える。
git checkout main
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
$ git branch
develop
feature
* main
6-3.git mergeコマンドを実行
git merge <マージしたいブランチ名>
$ git merge feature
Updating 9a5862e..5a7dffc
Fast-forward
myapp/static/style.css | 0
myapp/templates/index.html | 5 +++++
2 files changed, 5 insertions(+)
create mode 100644 myapp/static/style.css
create mode 100644 myapp/templates/index.html
マージ戦略
Fast-forwardマージ:
- 直線的に進むブランチの統合に使用します。
- 歴史が直線的に保持されます。
No-ffマージ(--no-ff): - マージコミットを作成し、マージの履歴を明示的に残します。
- 変更の統合点が明確になるため、大規模プロジェクトでよく使われます。
Squash and Merge: - 複数のコミットを一つにまとめてマージします。
- コミット履歴が整理され、クリーンに保たれます。
Rebase and Merge: - コミット履歴を再配置してからマージします。
- 直線的な履歴を維持するために使用されますが、履歴の書き換えが伴うため、注意が必要です。
参考
Discussion