状況
自分だけが使う feature ブランチで PR を出している。main が進んだので、rebase で最新の main に追従させたい。
PR を更新するまでを正しい順番に並べてください。
正答
- git push --force-with-lease で PR を更新する
- git rebase origin/main で付け直す
- git fetch origin で最新を取る
- テストを流して壊れていないか確かめる
正しい順番
- git fetch origin で最新を取る
- git rebase origin/main で付け直す
- テストを流して壊れていないか確かめる
- git push --force-with-lease で PR を更新する
解説
origin/main は fetch したときの状態なので、先に git fetch origin で最新にしないと古い main の上に付け直すことになる。rebase の後は、main の変更と自分の変更を組み合わせた状態をテストで確かめてから push する。rebase でコミットが作り直されているため通常の push は拒否され、上書きが要る。--force ではなく --force-with-lease を使えば、知らない間に他の人が push していたときに上書きせず止まる。
参考: git-scm.com
この問題を含む Git のテストを制限時間つきで解く
Gitクイズへ