質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

Q&A

解決済

2回答

3981閲覧

派生元が違うブランチをマージした際派生元のコミットも一緒にマージされる

kioka

総合スコア1

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

0グッド

0クリップ

投稿2020/08/19 09:32

前提

現在ある案件のGitの運用方法を変えようとしています。
masterのみで運用してるGitを、master,develop,featureに変更しています。
(もともと一人でGitを使っていたので、masterのみでしたが複数にで触ることになったので最低限?必要なブランチを作成した次第です。)

問題

マージのイメージ
掲題の通り、添付画像のように3,4でマージを行うと、developブランチのfeatureを切る前のコミットも一緒にmasterブランチへマージされます。
こちらは仕様なのでしょうか?
私の認識では、featureで変更された内容だけがmasterにマージされると考えていたのですが。。。
いくら調べても何も出てこなかったので、そもそもの「自分の認識が違っているのではないか?」と思い始めた次第です。

もし私の認識の方(featureのみがマージされる)正しければ、どういったことが問題なのか検討つく方がいらしたらご教授お願いできたらと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

掲題の通り、添付画像のように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 09:57

y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kioka

2020/08/19 10:28

汚い言葉で失礼します。 バチクソわかりやすかったです! 大変ためになりました!ありがとうございます。 わかり易すぎてちょっと興奮してしまいましたw アホみたいな質問に対して誠実・丁寧にご返信いただきありがとうございます。 こちらの回答ベストアンサーに選ばさせていただきます。
guest

0

こちらは仕様なのでしょうか?

はい。

投稿2020/08/19 09:39

maisumakun

総合スコア146571

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/08/19 09:40

masterから分岐してからの歴史すべてがmergeの対象となります。
kioka

2020/08/19 09:47

早速ご返信ありがとうございます。 なるほど、ずっと指定したブランチ内での編集のみがあたると勘違いしておりました。 ここで正せてよかったです。 では、もしfeatureの変更点をmasterにあてたいとなると、developでマージしたコミット(画像でいうと3番)をcherry-pickで引っ張ってくるのがオーソドックスな感じでしょうか?
maisumakun

2020/08/19 09:49

チェリーピックなりプルリクエストなり、運用次第です。
kioka

2020/08/19 09:52

なるほど、参考になりました。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問