Git レビューする時に使うコマンド


目的

タスクの作業途中にレビュー依頼を受けた時のコマンドをまとめました。
深夜テンションで書いたのでおかしいところがあったらコメントにて教えてください🙏

環境

$ git --version
git version 2.26.2

1. まずはコミットする

$ git status
$ git diff

$ git add
$ git commit

のコマンドを駆使してコミットできるものはコミットします。

2. 編集途中のコードを一時的に退避する

$ git stash -u

急いでレビューしたい時はスタッシュで退避させておきます。
-u オプションを指定すると untracked file も含めて退避します。

$ git add -A
$ git commit -m wip

しばらく戻って来ないようなら、一旦コミットしてしまうのも良いかなと思います。

3. 退避した内容を確認する

$ git stash list
$ git stash show -p

Gitのことを信頼してるので、あまり内容を確認することはないです。

4. ローカルリポジトリを最新の状態にする

$ git fetch

これを忘れるとレビューするブランチ見つからないやん🤔ってなります。

5. レビューしたいブランチに切り替える

$ git switch xxxxx

ローカルリポジトリを最新の状態に更新して、レビューしたいブランチに切り替えます。(checkout は使わないゾという強い意志)

6. ビルド&キャッシング

$ docker-compose down --rmi all -v # 必要に応じて
$ docker-compose up -d # 必要に応じて
$ yarn # 必要に応じて
$ yarn dev # yarn watch
$ composer install # 必要に応じて
$ composer dump-autoload
$ cp .env.example .env # 必要に応じて
$ php artisan migrate # 必要に応じて
$ php artisan db:seed # 必要に応じて
$ php artisan optimize
$ php artisan test
$ php artisan migrate:rollback # 必要に応じて

変更されているファイルに応じてビルドし直したり、キャッシュし直したりします。(内容はプロジェクトによりますが)

7. レビューする

魚の骨が喉につっかえてしまうようなコードがないか確認して問題なければLGTMです。
レビューする時に使うコマンドを補足でご紹介します。

レビュー用にウェブ設計チェックリスト作りました。チェックリストとソースコードを照らし合わせてレビューします。

補足: git log

コミットのログを表示します。

$ git log
$ git log --one-line
$ git -P log --one-line

-P Git全般のオプションですが、ページャーなしで一気に表示します。地味に便利かもです。

$ git log --oneline --graph --decorate --name-status

オプション指定すれば良いってもんじゃないですけど、git log のオプションめちゃくちゃいっぱいあります。

  • --one-line 1コミット1行で表示
  • --graph グラフっぽい表示
  • --decorate ブランチ名、タグ名等の別名表示
  • --name-status ファイル名を表示

参考: git log よく使うオプションまとめ

補足: git show

$ git show
$ git show -1
$ git show -2
$ git show -3

git showgit show -1 は同じく最新のコミットの内容を表示します。
数値の代わりにハッシュ値を指定してもokです。

補足: git diff

$ git diff master
$ git diff master --name-only

他のブランチとの差分を見ることができます。
1個1個のコミットを見るのめんどいよって方はこちら。

--name-only 差分のあるファイル名のみ一覧表示

$ git diff master --color=always | less -R

git diff の結果を less を使って表示したい時はこんな感じで表示します。オプションを付けないとうまく色付け表示できないので注意です。

補足: git grep

ワークツリー内の検索をします。
.gitignore に登録してあるファイルは除外されるので便利です。

$ git grep -np 検索したいワード

-n 検索に一致した行数を表示
-p 検索に一致した行の前にある関数名を表示

git grep を使う

補足: git blame

$ git blame ファイル名

リポジトリで管理されているファイル内の行ごとの最終更新を見れます。
行ごとのコミット(ハッシュ値)、コミッター、更新日が分かるよ。
問題が起きたとき等でどのコミットで変更されたかを探すなどするときに便利です。(犯人探しには絶対に使わないでください。大体犯人は自分です)

この辺りのサイトからレビュイーの趣味趣向合いそうな最高のLGTM画像を探します。
一番時間を使うところです。ここは全力で探しましょう。

補足: 結局のところ...

GitHubの差分表示が優秀すぎるのでコマンド打つ必要ないのかも🤔

8. 再び自分のブランチに戻る

$ git switch -

ブランチ名を指定してもいいですが入力するのも思い出すのも面倒です。
- で一つ前のブランチに戻れます。

9. 退避しておいたコードを元に戻す

$ git stash pop

最新のスタッシュから退避させておいたコードを戻します。
いい感じのコードを書けたらコミットしてプッシュします。

10. コミットしてプッシュする

$ git add
$ git commit
$ git push -u origin HEAD

レビューする時は大体この流れでやってます。

Git関連の記事まとめ

参考記事