先日 git push --force でなく git push --force-with-lease を使う - valid,invalid ことに関して記事を書いたら思いのほかバズり、アクセス解析の棒グラフの縦軸が意味を失った。
これが「みな同じように git push --force
を不安に思っていたんですね〜 いや〜よかったよかった :innocent: 」というよい話なら良かったのだが rebase の是非という第n次ソフトウェア大戦の地雷原をそれと知らずに踏み抜いた結末と後から気づいた。
改めて個人的な是非
それと自覚したうえで rebase
および -f
について改めて考えてみたが、やはり自分にとっては是だ。
履歴を綺麗にしたいことはよくあるし、branch の統合手段として本当に優れていると思う。ぽちぽちと merge
で解消していくことはストレスだ。*1
これまでに git を使うチームはたった2つしか経験していないが*2、自分が知る限り force push
で事故が発生したのを見たことがない。運が良かっただけかもしれない。
見たことがないからといって未来においても発生しないわけではないので、その第一号が自分の引き起こしたものにならないよう --force-with-lease
で万一を防ぎたい。それが自分にとって精神衛生上よい方法であり、rebase
を使ううえでの better way だと思う。
There's more than one way to do it.
これはあくまで自分にとっての選択であり、rebase
しない選択を貶すものではない*3が、とはいえ rebase
や -f
禁止といったリスク回避の仕方については苦言を呈したい。
git はツールに過ぎず、ツールが提供する使い方が多岐にわたればこそ、メリット・デメリットの判断は思慮深き開発者たちに委ねられていてよいと思う。
教条的に判断の自由を奪うチームより、信頼と尊敬にもとづく寛容あるチームにいたい。
*1:git 使い始めの頃はそうしていた…。あと記憶が曖昧だが、 SVN は update コマンドがデフォルトで rebase の挙動をしてた気がする
*2:1つ目は趣味で集まった友人3人。2つ目は Quipper。web developer だけで20人弱の開発者がいる
*3:いまの同じチームの中にもアンチ rebase 派がいるかもしれない