valid,invalid

関心を持てる事柄について

git push --force でなく git push --force-with-lease を使う

前に社内チャットで流れてて初めて知った。

他人の変更を上書きするおそれのある 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 を使っているので masterdevelop branch に誤って force push されてしまう恐れはない)

--force-with-lease を使おう。


(追記) rebase の是非に関する私見は別記事として改めて書いた。

続・"git push --force でなく git push --force-with-lease を使う" - valid,invalid