共有ブランチを rebase して、チームの半日を溶かした話

新人の頃、何人かで触っていた feature ブランチの履歴が「ごちゃごちゃしていて気持ち悪い」と感じた私は、よかれと思って rebase でコミットを並べ直し、git push --force で上書きした。手元の履歴は見違えるほどきれいな一直線。満足して席を立った。
30分後、チームのチャットがざわつき始めた。「pull したらコンフリクトの山」「同じコミットが2つある」「誰の手元が正しいの?」。私が書き換えたのは、みんながすでに pull して持っていた共有済みの履歴。全員のローカルと食い違い、その日の午前はチーム総出の復旧作業に消えた。
あの日、鉄則が体に刻まれた。push して共有した履歴は、書き換えない。ルールブックに書いてあるからではなく、痛い目を見たからだ。一方で、まだ push していないローカルブランチを main に追従させる rebase は、誰も巻き込まない。きれいな履歴は、共有する前に、自分の手元で作ればいい。
