【Git】GitLabで1人コードレビューごっこしてみた③(レビューからマージまで)

前回の続きです。
【前回】：[【Git】GitLabで1人コードレビューごっこしてみた②(branch作成からMergeRequestまで)](https://qiita.com/OKsaiyowa/items/5b21074c33528046d08d)

[プルリクエストを使った開発プロセス](https://backlog.com/ja/git-tutorial/pull-request/03/)

`>>>引用`

>①[ 開発者 ] 作業対象のソースを clone または pull します。
②[ 開発者 ] 作業用のブランチを作成します。
③[ 開発者 ] 機能追加、改修といった開発作業を行います。
④[ 開発者 ] 作業が完了したら push します。
⑤[ 開発者 ] プルリクエストを作成します。
⑥[ レビュー・マージ担当者 ] 通知されたプルリクエストから変更を確認しレビューします。
⑦[ レビュー・マージ担当者 ] レビュー結果を判断し、必要ならば開発者にフィードバックします。
⑧[ レビュー・マージ担当者 ] レビューの結果、問題がない場合はマージします。
⑨[ レビュー・マージ担当者 ] レビューの結果、対応自体が不要となるなど、プルリクエスト自体が必要ない場合はクローズします。

今回は⑥～⑧までです。
⑨はマージをGitLab側で拒否するだけなので書きません。
一旦、GitLabに関してのメモはこれで最後になりそうです。

本来は一人ですることではないので、それこそ"ごっこ遊び"の感覚でなぞっていきます。


##コード準備
レビュー用にコードを用意します。

「僕Unityできますよ」のTシャツで有名なコードをお借りします。

```C#
public float speed = 100;

    void Update () 
    {
        if(GameObject.Find("MainGame").GetComponent<MainGame>().gameStart)
        {
            if(Input.GetButton("Vertical"))
            {
                transform.position += transform.forward * speed;
            }
        }
    }
```


【参考リンク】：[「僕Unityできますよ」Tシャツのコードレビュー](https://qiita.com/YamadaGames/items/cde2162b52ba80bc0beb)

このコードを作業ディレクトリにぶち込んで準備完了です。

##マージ用のブランチ作成

前回の軽いおさらいです。
マージリクエスト用のブランチを作ります。
2つの方法でメモしときますが、今回は①の方法が楽そうです。

####①ローカルのブランチを基にしたブランチをローカルに作ってリモートに登録
```:作業ブランチを任意のブランチに
git checkout 任意のローカルブランチ
```

```:ブランチを作成してチェックアウト
git checkout -b 作りたいブランチの名前
```

```:先程作成したブランチ
git push -u origin 先程作成したローカルのブランチ名
```

####②リモートのブランチを基にしたブランチをローカルに作ってリモートに登録

```:ローカルにブランチ作成、ついでにチェックアウト
git checkout -b ローカルに作成するブランチ名 origin/リモートのブランチ名
```

```:リモートにPush
git push -u origin 作成したブランチ名
```

これでリモートにブランチができたはずです。

ただし、これだとまだローカルの変更が反映されていない状態なので
`add`と`commit`を使って変更を反映させていきます。

```:全ての変更をadd
git add .
```

```:addしたファイル全てをcommitする。-mはたぶんmessageの意味
git commit -a -m "てすと"
```

```:origin以下は無くても大丈夫。ただ、念のため明示したほうが安全かも
git push origin 作成したブランチ名
```

##MargeRequest

下記画像の`Merge request`を押して次に進みます。

![MR.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/b35c7bde-75ed-d128-9e3f-300c6aa95411.png)


色々とコメントやらタイトルやらを書いてリクエスト送ります。
そうすると、下記画像のように、変更箇所が見れます。
![クソコード.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/5fa50f20-2487-7be6-ae7e-a7d986bc9095.png)


今回の変更箇所は、完全に新たなファイルであって
何かしらのファイルに修正を加えたものではありません。
なので、差分等は表示されていない状態です。

今回は**なんかの間違いでこのコードのマージが通ってしまった、、、**
という仮設定で進んでいきます。


##レビュー

###変更の差分
誤ってマージされていたクソコードをリファクタリングし、
再度ブランチを切ってマージリクエストを送ります。
そうすると、下記画像のように増えた箇所、減った箇所をそれぞれ緑、ピンクで教えてくれます。

![ChangeGitLab.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/97eb57ab-42d4-157b-8db5-5754e1ef87fe.png)


###コメントする

コメントしたいコードの行にカーソルを合わせると
吹き出しマークが出てきます。
あとは、クリックして適当にコメントして`Comment`を押せばOKです。

![Gitlabコメント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/96498aa7-68ae-74ee-11ff-5d0ecf011d16.png)


コメントにリプライを送ることもできます。
全部ひとりでやってるのでカオスですが、非常に便利ですね。

![gitlab孤独.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/707a3475-5d8a-5653-b4e5-578161a28c2a.png)


修正後に前回のコメントが書いてあった箇所を見る方法もちゃんとあります。
`version1`として遡って見ることが可能です。

![GilabTest3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/8e98fcec-78f1-2fb6-6f87-6822f02bbc1a.gif)

##WIPについて
マージリクエストを送る際のタイトルにはデフォルトで
`WIP`という文字がついています。

意味は`Work In Progress`で、**まだ作業中だからマージしないようにね！**ってことです。
`WIP:`という文字列をつけることで、マージボタンを非表示にできます。

マージしたい時は`Resolve WIP status`を押せばマージボタンが出現します。

![WIP.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244071/97ac1b53-42a9-9b09-03b8-ec8e8be848fd.png)


##その他使ったコマンド

```:ローカルのブランチの追跡ブランチを表示
git branch -vv
```

```:追跡ブランチの切り替え
git branch -u origin/[ブランチ名]
```

uはupstreamの略らしいです。


##参考リンク
[仕様書のレビューをGitlabのMerge Requestでやろう！](https://qiita.com/chaspy/items/a4fe44fecf6b8fb0e587)
[GitLabでタイトルにWIP:を付けるとマージボタンをdisableにすることができる](https://qiita.com/akatsuki174/items/cf8b70d2462539a08589)
[[git]ローカルブランチがどのリモートブランチを追跡してるのか確認する方法](https://dackdive.hateblo.jp/entry/2014/02/02/235439)