◆ 機能を削除しても 別ブランチで追加した部分で使ってると競合せずマージできてしまう

バージョン管理ツールで競合はしないけどエラーが起きる例です
大勢で開発していて常にブランチがいっぱいある環境の人なら当たり前かもしれませんが 私みたいに基本一人なのでブランチが分かれることがほとんどないと つい忘れてることがあるので書いておきます

理論上どのツールでも起きそうですが 一応 git を前提にしています

ツリーがこのようになっているとします

       --- B -->
/
--- A ---- C -->

A から B と C に枝分かれします
A の時点ではある機能が method1 として実装されています
B では新機能のため method2 を作って それは method1 の機能も含んでいるので既存の method1 はすべて method2 を使うようにして method1 は削除しました
C ではなにか機能を追加してその処理には機能には method1 を使っています

B と C をマージしようとすると C では既存コードをほぼ変更せず新規ファイルとそれの呼び出しだけなのでマージ時に競合は起きません
しかし C 使っている method1 はすでに消されているので実行時にエラーになります

こういうところでは静的言語はビルド時にエラーになってわかりやすいですが 動的言語だと実行したときに初めてエラーです
それがめったに使わない機能だと気づかずに あとになってから動いてないと気づくこともあります
今回の例みたいな新機能だと 最初に確認しそうですが C の延長のものをしばらく使っていて忘れた頃に B をマージだと有りえそうです

完璧にテストを網羅して CI の設定してるとかいうプロジェクトなら大丈夫でしょうけど 大したものでもないしそこまではいいやというのも多いですからね
競合はないし 適当に画面いくつか見ても表示されているから大丈夫と思いがちですが 機能を削除して それより前の時点から分岐してるものがあるとマージするときに注意したほうが良いと思います