共有ブランチへの git push -f で起きうる最も深刻な問題は?
正答
- 自分の作業ツリーにある未コミットの変更が消える
- リモートのブランチそのものが削除されてしまう
- 解消していないコンフリクトマーカーがコミットに混ざる
- 他の人が push したコミットがリモートから消える
解説
git push -f(--force)はリモートのブランチを自分のローカル履歴で無条件に置き換える。自分が最後に fetch した後に他の人が push していた場合、そのコミットはリモートの履歴から外れ、本人のローカルに残っていなければ失われる。ローカルの未コミット変更には影響しない。ブランチの削除は push --delete で別の操作。やむを得ず強制するときは --force-with-lease を使うと、知らないコミットがあれば拒否される。
参考: git-scm.com
この問題を含む Git のテストを制限時間つきで解く
Gitクイズへ