主旨
広告記事ではありません。
プロジェクトの運営でgithubを使っている方も多いかなと思います。
修正内容をPR(プルリクエスト)をする際に、レビュアーが確認しやすいようにするために
変更内容を一まとめにして出したほうが、後々のレビューなどが楽になると感じました。
検索してみるとざくざく出てくるので、いろんな現場で課題になっているような気がします。
本稿では、git marge --squash で、PRする際に細かいコミットを一まとめにする例を扱います。
担当者レベルでは、細かくコミットした方が良い
失敗しやすいところでは、細かくセーブしてやり直せるようにしとけ。という考えは
個人レベルでは正しいと思います。
- イニシャルコミット
- 新しいビジネスロジックの追加
- 固定値の変更が必要になった
- 3のリバート(取り消し)
- 仕様変更に伴い、ビューを改修
- テストケースを追加
- 6で見つかった問題の改修
極端な話、個人のローカル開発環境ではこのくらい細かくても良いかも。
個人の範囲では。レビューする側にとっては面倒くさいことこの上ないけど。
レビューを行い、問題なければマージする段階では一まとめコミットの方が良い。
ましてや個人レベルのリバートがふくまれているようなものは・・・。
作業手順
仮に
ブランチは、以下の名前とします
- stem:開発用ブランチの分岐元かつ、PRを出す対象(チーム内で共有)
- edit:実装作業を行うブランチ
- prrq:PR用にコミットをまとめるブランチ
同一リポジトリ内で作業するとします。
プライベートリポジトリに、最新のstem(分岐元)ブランチが存在すると仮定し
ブランチを用意する
# stemブランチを選択する
$ git checkout stem
# 作業用ブランチを作成
$ git checkout edit
# PRに出す用のブランチを作成
$ git checkout prrq
注:状態をそろえるために作業用ブランチと同時に、PR用のブランチも作成してください!
PR出す直前に、ブランチをまとめる
# pr用ブランチに切り替えて
$ git checkout prrq
# merge --squash で、一まとめにする
$ git merge --squash edit
#一つのコミットとみなされていればOK
後はこの、 prrqブランチを使ってPRを出せばOK。
実務ではedit,prrqブランチは各メンバー用のリモートリポジトリにpushすることが多いと思いますが、
説明を簡単にするため同一リポジトリを使うと仮定しています。
余談
githubのPR機能には merge and squash いうものがあるので、それを使っても良い。
特に、開発用のブランチになら。