掲題の通り、添付画像のように3,4でマージを行うと、
developブランチのfeatureを切る前のコミットも一緒にmasterブランチへマージされます。
こちらは仕様なのでしょうか?
仕様です
私の認識では、featureで変更された内容だけがmasterにマージされると考えていたのですが。。。
feature ブランチを master ブランチへマージしたときは、
feature ブランチの最新リビジョンに至るまでの全てのリビジョンの内、
master ブランチに含まれていないリビジョンの更新内容がすべて反映されます
そのため、develop ブランチの master ブランチから分岐した後の各リビジョンの更新内容も
master ブランチに適用されることになります
relase ブランチという考え方
いわゆる、Git flow とか、A Successful Git Branch Model というブランチの分け方は
develop ブランチから feature ブランチを作成しているので、
develop ブランチの開発途中のコードが feature ブランチに混入している状態になります
そのため、feature ブランチを直接 master ブランチにマージせず
develop ブランチからQA、最終確認用の feature ブランチを作成し、
それまでの各 feature ブランチの変更を一度に master にマージすることになります
参考: 【Git】推奨されているブランチの分け方まとめ | ultra code
develop ブランチからマージするのが難しいとき
feature ブランチごとの制作の速度や規模に差があって
なかなか develop ブランチが安定せず
release ブランチの作成のタイミングが難しいこともあります
そのような場合は、master ブランチから feature ブランチを作成し、
CI を回すための develop ブランチにはマージだけを行い、
開発が完了したら feature ブランチを直接 release もしくは master にマージする方法があります
参考: 拡張 Git flow (Git Feature flow) | ultra code
2020/08/19 10:28