Git入門 part5 / Pull Request
本日はサルでもわかるGit入門 プルリクエスト編です!
目次
1.プルリクエスト
本日学習するプルリクエストとは、Githubなどで利用できる機能で、ローカルリポジトリでの変更を他の開発者に通知する機能です💡
チームで開発をする時に、作業内容をレビュー担当者・マージ担当者などの関係者に通知し、確認してもらうといった使い方ができます😊
自分で作った成果品を、客先に納品する前に上司に確認してもらうようなイメージですね。
プルリクエストの利用により、最終的にマージされるソースコードの品質を高くすることができます。
プルリクエストは一覧で表示され、未完了のプルリクエストを漏れなく確認できます。
プルリクエスト上では、担当者同士でコメントのやりとりをして議論できます。更に、対象のブランチにプッシュされたコミットは、自動的にプルリクエスト上に反映されます。
プロセス | 開発者 | レビュー・マージ担当者 |
---|---|---|
1 | 作業対象のソースを clone または pull | |
2 | 作業用ブランチを作成 | |
3 | 開発作業(機能追加や改修) | |
4 | push | |
5 | プルリクエストを作成 | |
6 | プルリクエストから変更を確認しレビュー | |
7-1 | 修正が必要なら開発者にフィードバック (プロセス3へ戻る) |
|
7-2 | 修正が不要ならマージ | |
7-3 | プルリクエスト自体が不要ならクローズ |
2.チュートリアル
早速チュートリアルに入ります🙂
JavaScriptで配列だけが準備されている状態のソースコードに、リストの内容をソートする処理を追加するという内容です。
BacklogとGitHubが選択できるので、Githubでやってみます!
2-1. サンプルリポジトリの準備
まずはGithubにログインし、新規リポジトリを作成します。
作成したリポジトリの中に、以下のようなjsファイルを作成します。
2-2. 開発ブランチでの修正
次に、作業するためのブランチを作成します💪
add-sort-func
というブランチを作成し、切り替えます。
ブランチを切り替えたら、先程作成したjsファイルを修正します🖋
コメントを追加してコミットします。
2-3. プルリクエストの作成
リポジトリのトップに戻ると、直近 Push されたブランチが表示されるので、Compare & pull request
を実行します💡
実行すると、次のような画面が表示されます。スクロールして画像2枚に分かれています🙂
上のほうにbase: master
←compare: add-sort-func
と書かれていますね😶
これは、base
がプルリクエストをマージする対象のブランチ、compare
がプルリクエストをマージしてもらうブランチを指しています。
更に2枚目のキャプチャは、base
に対してcompare
を比較し、10行追加されていることが分かりますね✨
次はCreate pull request
ボタンを押します。
これで他の担当者にレビューしてもらうことができるようになりました!🎉
2-4. レビューとマージ
プルリクエストが作成されたら、今度はレビュー担当者がFiles changed
タブから変更内容を確認します。
修正してほしい箇所があった場合、該当行の左端にある+
からコメントを追加することができます😳便利〜!
自作自演になってしまいますが、修正指示がきたので修正し、再度コミットを行います。
2-5. 画面上でマージ
レビュー担当者は、再度レビューした結果、問題が無ければマージします👌
Merge pull request
を押すと、以下のようにコメントを書くことができます。
コメントは「修正ありがとうございました」などなんでもOKです😊
コメントを書いてConfirm merge
を押すと、マージされます😆✨
3.マージできない場合は?
3-1. 競合の発生
練習のため、別の開発者との競合が発生して、マージできない状況を作ってみます🙁
開発者Aが先程の等価演算子==
を使用し、開発者Bが厳密等価演算子===
を使うとします。
条件は先程と同じなので、再度新規リポジトリを作成してmaster
ブランチにjsファイルを作成します🖋
開発者Aが作業するためのadd-sort-func1
というブランチと、開発者Bが作業するためのadd-sort-func2
というブランチを作成します。
add-sort-func1
には、等価演算子==
を使ってコードを書き足します。
先程のチュートリアルと同様に、Compare & pull request
からプルリクエストを作成し、修正が無いものとしてマージします!
続いて、ブランチをadd-sort-func2
に切り替えて、厳密等価演算子===
を使ってコードを書き足します。
今度はPull requests
メニューからNew pull request
ボタンを押して、プルリクエストを作成します。
base: master
のままcompare: add-sort-func2
を選択すると、自動マージができないと言われました🤨
競合が発生しているからですね〜!
そのままConfirm pull request
を行い、プルリクエストの作成を実行すると、コンフリクトがあると言われます。
Insights
のNetwork
から、ブランチの様子を見ることができます。
3-2. 競合の解決
この競合を解決するには、Resolve conflicts
ボタンを押します🙂すると競合箇所が表示されます!!
今回の場合は厳密等価演算子===
を使用するように競合を解決して、Commit merge
ボタンを押します。
あとは通常通りにマージしていき、完了です👏✨
以上です〜!