プルリクエストを使用する
- プルリクエストはリポジトリの変更事項を複数のユーザーが検討し、ブランチ間のコードを併合する機能を提供する方法です。
- 重要なブランチ(例えば、リリースブランチ)に変更事項が適用される前に、プルリクエストを通じて複数のユーザーが変更されるコードについて検討でき、それを通じてコードにの品質を管理できます。
- プルリクエストを使用するためにはソースブランチと対象ブランチが必要です。
- ソースブランチ:変更事項が反映されたブランチ
- 対象ブランチ:変更事項が盛り込まれるブランチ
プルリクエストを作成する
Step 1. コードページへアクセス
①プルリクエストを作成するリポジトリコードページへ移動して, Pull Requsetタブを選択します。
② プルリクエストを作成 ボタンをクリックします。
Step 2. プルリクエストを作成
① リポジトリの変更事項が反映される対象ブランチを選択します。
② リポジトリの変更事項が反映されたソースブランチを選択します。
③ 対象ブランチ、ソースブランチを選択後、 選択 ボタンをクリックしてブランチの比較事項を確認します。
① プルリクエストのタイトルを作成します。
② プルリクエストの説明を作成します。
③ 対象ブランチ、ソースブランチ間の差を確認できます。
- Commits タブ: 二つのブランチ間のコミット差を確認できます。
- Files changed: 二つのブランチ間のファイル変更事項を確認できます。
④ 作成 ボタンをクリックしてプルリクエストを作成できます。
⑤ 再度選択 ボタンをクリックして対象ブランチ、ソースブランチを変更できます。
プルリクエストを確認する
Step 1. プルリクエストのリスト
① コードページの Pull Request タブからプルリクエストのリストを確認できます。
② 初めて[Pull Request]に入るとオープン状態のプルリクエストリストが表示されます。フィルタを通じて状態によるプルリクエストのリストを確認できます。
Step 2. プルリクエストの詳細情報
① プルリクエストをクリックして詳細情報を確認できます。
② プルリクエストのタイトルと説明が表示されます。プルリクエストを作成したユーザーはこの内容を編集できます。
③ タブ項目別プルリクエストの詳細情報を確認できます。
- Comments タブ: プルリクエストに付いたコメントを確認できます。
- Commits タブ: 二つのブランチ間のコミット差を確認できます。
- Files changed タブ: 二つのブランチ間のファイル変更事項を確認できます。
④ 追加 ボタンをクリックして当該プルリクエストにコメントを作成できます。
⑤ 編集 ボタンをクリックしてコメントを修正できます。
プルリクエストの併合
Step 1. プルリクエスト状態の確認
① 対象ブランチ、ソースブランチ間の衝突がない場合はこのメッセージが表示されます。
② リクエストされたプルリクエストについて検討が完了してから、二つのブランチを併合する際は Merge ボタンをクリックします。
- Mergeはログインしたアカウントが顧客アカウント、もしくはNCP_INFRA_MANAGER権限、もしくは選択したリポジトリについてWRITE権限以上を持っているサブアカウントでなければなりません。
Step 2. プルリクエストの併合
Mergeは新たな併合コミットを生成します。
① Merge 戦略が表示されます。
② 現在ログインしたユーザーのIDが自動で入力されます。この内容は修正できます。
- 作成者名は生成されるコミットのuser.name 値になります。
③ 現在ログインしたユーザーのメールが自動で入力されます。この内容は修正できます。
- メールアドレスは生成されるコミットのuser.email値になります。
④ コミットメッセージを作成します。
⑤ 適用 ボタンをクリックして二つのブランチをMergeします。
- Mergeはログインしたアカウントが顧客アカウント、もしくはNCP_INFRA_MANAGER 権限、もしくは選択したリポジトリについてWRITE 権限以上を持っているサブアカウントでなければなりません。
プルリクエスト衝突の解決
Step 1. プルリクエスト状態の確認
① 対象ブランチ、ソースブランチ間の衝突がある場合、このメッセージが表示されます。
② 衝突がある場合、 Mergeボタンは無効化されており、個人パソコンで衝突を解決してから併合できます。
Step 2. プルリクエスト衝突の管理
以下の内容は個人パソコンで実行される作業であり、個人パソコンにリポジトリが存在するという過程の下で作成されました。対象ブランチはmaster、ソースブランチはissueに仮定します。
Git Clientで以下の内容を実行します。
① 対象ブランチにチェックアウトします。
$ git checkout master
② merge 命令語でソースブランチを併合します。
$ git merge issue
Auto-merging file.txt CONFLICT (add/add): Merge conflict in file.txt Automatic merge failed; fix conflicts and then commit the result.
- 二つのブランチ間の衝突がある場合、上のようなメッセージが表示されます。
③ 衝突が生じたファイルリストを確認します。
$ git status
On branch master Your branch is up-to-date with 'origin/master'. You have unmerged paths. (fix conflicts and run "git commit") Unmerged paths: (use "git add <file>..." to mark resolution) both added: file.txt
④ 衝突が生じたファイル内容を確認すると以下のように変更されています。
<<<<<<< HEAD master: 対象ブランチの内容 ======= issue: ソースブラントの内容 >>>>>>> issue*
- =======を基準に上は対象ブランチの内容、下はソースブランチの内容が作成されています。
- 衝突が生じた部分を確認してファイルを修正し、衝突を解決する必要があります。 gitで表示したマーカーを全て除去する必要があります。 (<<<<<<< HEAD/=======/>>>>>>> issue)
⑤ 衝突ファイルを全て修正後、当該内容を遠隔保存所にpushします。
$ git add file.txt
$ git commit
$ git push
⑥ 対象ブランチにソースブランチが併合されてリポジトリに反映されます。
衝突の解決に関するより詳しい内容は git 公式文書をご確認ください。(git公式文書へショートカット)