git: 別ブランチの一部のファイルのみMergeする方法
背景
semantic-release と トランクベース開発 をする中で、
git branch --contains
に含まれることを必要条件とし、
CHANGELOG.md
をリリースブランチからmaster ブランチに 持ってくる必要がありました。
今回その方法をご紹介致します。
方法
今回はrelease/v1.0.x
ブランチから master
ブランチにCHANGELOG.md
のパッチを当てることを想定実行します。
1. パッチファイル作成
git format-patch --histogram '..release/v1.0.x' -- CHANGELOG.md
上記を実行すると、CHANGELOG.md
のmaster
とrelease/v1.0.x
コミット差分だけパッチファイルが生成されます。
2. パッチを当てる
git am -3 *.patch
1番で生成されたパッチファイルを適応します。
おまけ
git merge {リリースブランチのSHA1}
最後に上記を実行すると、git branch --contains {tag名}
をすると
ex) v1.0.0
が含まれることが確認できます。