ここにブランチが3つあります
- main
- featureA
- featureB
featureAとBそれぞれpackage.jsonにアプデがあり、featureAを先にmainにマージ済みの状態
main←featureBでpackage.jsonないしpackage-lock.jsonにコンフリクトが発生する。
普通に考えたらfeatureB←mainして npm install
すれば解決するが、パッケージのマイナーバージョンを変えたくない場合はこの方法だとNG。package-lock.jsonが更新されて依存パッケージのマイナーバージョンが変更されてしまう。
そんなときは、mainをmainBとしてフォークして、mainBにfeatureBで追加したパッケージを改めてインストール。 npm install hogehoge@1.2.3
featureB←mainBするとやっぱりpackage-lock.jsonがコンフリクトするのでmainBのものを使う git checkout --theirs package-lock.json
で、 npm ci
などすれば正常化できるのだ
mainも取り込み済みなので、main←featureBがコンフリクトすることもない。