まとめ
-
git push --force
ではなくgit push --force-with-lease
を使おう -
--force-with-lease
オプション付き push を alias 登録しておくと便利
そもそも git push --force とは
git push --force
は強制pushのためのコマンド。いったんリモートにpushしたコミットを なかったことにする 場合に使われる。たとえば、次のような場合:
- 間違ってpushされたコミットを、リモートのlogから消し去る場合
- GitHub Actions動作確認用にpushされた実験的なコミットを、あとで消す場合
--force-with-lease を使おう
過ちを正すため、時には力も必要だが、大きすぎる力には危険が伴う。git push --force
は、気づかないうちに他人のコミットを巻き込んでしまう可能性がある。自分が fetch したあとに、誰かがコミットを push している場合が、そうだ。そのとき、このコマンドは誰かのコミットを闇に葬ってしまうのだ。
そこで git push --force-with-lease
を使う。このオプションは、fetch 後にブランチが更新されている場合、force-pushを失敗させる。これで、うっかり他人のコミットを消し去ってしまう心配が減るだろう。
以下のようにエイリアスを設定しておくと、オプションを覚える必要がなくなって、便利:
git config --global alias.pushf "push --force-with-lease"
参考
追記 (2020-05-26 22:37)
ほぼ同内容のQiita記事がすでにありました: