「プルリクエスト来たけど、なんかバージョンが違うからうまく反映できない…」といったとき、 どのようにマージ作業を行っていくか記載します。 具体的には、プルリクエストの画面で以下のようなメッセージが表示されているとき、どのようにプルリクエストを反映するかについて記載します。
目次
発生している状況
このような状況は以下の図に示すような状態でプルリクエストが行われると発生します。 ブランチ が作られた タイミング から master の実装が進んでしまい、古い master で 開発された チェックイン が プルリクエスト としてやってくる状況です。 おそらく、よく発生する状況かと思います。
プルリクエスト対応作業(マージ作業)の概略
プルリクエスト がきたとき、おおまかに以下のような作業手順になります。
- "プルリクエストテスト用ブランチ" を 作成
[master]> git checkout -b [プルリクエストテスト用ブランチ名] master
- "プルリクエストテスト用ブランチ" に プルリクエスト を反映
[pulreq]> git pull [URL] [レポジトリ]
- "マスター" と "プルリクエストテスト用ブランチ" を マージ
[master]> git merge [プルリクエストテスト用ブランチ名]
- "プルリクエストテスト用ブランチ" を 削除
[master]> git branch -d [プルリクエストテスト用ブランチ名]
プルリクエスト対応作業(マージ作業)の詳細
私的都合により、 GitHub for Windows を利用して行います… といっても シェル起動 か フォルダを開く 程度でしか利用しませんが。。
- シェル を 起動します。
GitHub for Windows 上で、プルリクエストのあったプロジェクトを右クリック、[open a shell here] を選択します。
- プルリクエスト を テスト するための ブランチ を作成します。
起動した シェル上 で、以下に示す コマンド を実行します。 ブランチ作成後、現在のローカル状態(HEAD)は作成したブランチになります。
作業のイメージ
シェルコマンド
1git checkout -b pullrequest master
- 作成した ブランチ に プルリクエスト を 取得します。
起動した シェル上 で、以下に示す コマンド を実行します。
作業のイメージ
シェルコマンド
1git pull https:
//github
.com
/user-A/sample-project
branch-A-01
- プルリクエスト を テスト します。
GitHub for Windows 上で、プルリクエストのあったプロジェクトを右クリック、[open in explorer] を選択します。
エクスプローラー が開くので、開いた プロジェクト を テスト します。
- プリリクエスト を コミット します。
GitHub for Windows 上で、プルリクエストのあったプロジェクトを開き、コミットします。
- マスター と テスト用ブランチ を マージ します。
起動した シェル上 で、以下のコマンドを実行します。 マージ は自動的に実行され、コミット されます。
作業のイメージ
シェルコマンド(自動コミット)
123git checkout master
git merge pullrequest
git push origin master
[参考] マージ結果を自動コミットせず、確認してからコミットしたい場合
コミット前 に正しく マージ されたか チェック を行いたい場合、マージを行うときに
--no-commit
オプション を追加します。12git checkout master
git merge pullrequest --no-commit
12git commit
git push origin master
- 不要な テスト用 ブランチ を削除します。
作業のイメージ
シェルコマンド
12git branch -d pullrequest
git push origin :pullrequest
以上で プルリクエスト が来た際、行う作業は完了です。 …が、後から気づいたけれど、"プルリクエストを取得" する以外、"ブランチの作成"、"マージ"、"ブランチの削除"は、 GitHub for Windows 上からできました。。 そのうち、機会があったら更新します…
今回、以下のサイトを参考にしました。
- Git - Git のブランチ機能 - ブランチとマージの基本
- Git - ブランチとは
- Git - git-checkout
- Git - git-pull
- Git - git-merge
- Git - git-branch
- A-LIAISON BLOG - github で pull request をされたとき・するときの手順
- sotarokのお勉強 - Git で不要になったローカルブランチ・リモートブランチの削除
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!