前に社内チャットで流れてて初めて知った。
他人の変更を上書きするおそれのある git push --force
でなく、最後に fetch したタイミング以降に他人が push していたら失敗する git push --force-with-lease
を使う方が良い。
--force considered harmful; understanding git's --force-with-lease - Atlassian Developers
Quipper では GitHub flow のような開発フローを採用している。
各開発者が feature branch を作成し、master
/ develop
branch へ pull request を作る流れだ。
他人と修正箇所が重なってコンフリクトした際には rebase
が必要で、 rebase
後の内容を push する際には git push --force
が必要となる(--force
オプション抜きだとリジェクトされる)。
基本的に feature branch での開発は各開発者が管理するので他人の修正をふっとばすことはめったに無いが、この --force
が心臓に悪く、「今いるのは本当に自分の feature branch だっけ…?」と毎回不安になって git br
を連打する。
(追記: protected branch を使っているので master
や develop
branch に誤って force push されてしまう恐れはない)
--force-with-lease
を使おう。
(追記) rebase
の是非に関する私見は別記事として改めて書いた。
続・"git push --force でなく git push --force-with-lease を使う" - valid,invalid