危険察知4 択難易度 標準

状況

決済機能のブランチを main に取り込んでリリースする作業。作業者のローカルの main は 3 日前に pull したきり。

ダブルチェッカーとして最初に止めるべき点は?

$ git checkout main$ git merge feature/payment$ git push origin main

正答

  1. merge ではなく rebase にしないと、履歴が分かりにくくなる
  2. --no-ff を付けないと、マージコミットが作られない
  3. push の前に feature/payment ブランチを削除しておくべき
  4. main を最新にしていない。先に git pull してから取り込む

解説

ローカルの main は 3 日前のままなので、その間に他の人が main に入れた変更を含まない状態でマージしている。push は non-fast-forward で拒否されるのが普通で、そこで -f を使うと他人の変更を消してしまう。拒否されなくても、最新の main との組み合わせを試さずにリリースすることになる。先に git pull(または fetch して差分を確認)してからマージし、テストする。rebase や --no-ff は履歴の好みの話で優先度は低い。

参考: git-scm.com

gitmergepull

この問題を含む 危険察知 のテストを制限時間つきで解く

危険察知クイズへ