状況
決済機能のブランチを main に取り込んでリリースする作業。作業者のローカルの main は 3 日前に pull したきり。
ダブルチェッカーとして最初に止めるべき点は?
$ git checkout main$ git merge feature/payment$ git push origin main正答
- merge ではなく rebase にしないと、履歴が分かりにくくなる
- --no-ff を付けないと、マージコミットが作られない
- push の前に feature/payment ブランチを削除しておくべき
- main を最新にしていない。先に
git pullしてから取り込む
解説
ローカルの main は 3 日前のままなので、その間に他の人が main に入れた変更を含まない状態でマージしている。push は non-fast-forward で拒否されるのが普通で、そこで -f を使うと他人の変更を消してしまう。拒否されなくても、最新の main との組み合わせを試さずにリリースすることになる。先に git pull(または fetch して差分を確認)してからマージし、テストする。rebase や --no-ff は履歴の好みの話で優先度は低い。
参考: git-scm.com
この問題を含む 危険察知 のテストを制限時間つきで解く
危険察知クイズへ