2017-11-13 6 views
1

これは2つの独立したレポで私に起こっています。gitはdevをマスターとマージした直後でもdevとmasterの違いを表示します

私のdevブランチは、いくつかのコミットによって私のマスターブランチより先です。 devをマスターに統合するためのプルリクエストを開きます(スカッシュとマージ)。マージ後、私はdevとmasterを再び比較すると、コミットの同じdiffリストを表示します。

別のプル要求を再度開くと、同じコミットが表示されます。

私はdevを完全に削除し、マスターではcheckout -bという新しいブランチを作成することで問題を解決しましたが、なぜこの問題が発生したのか説明できますか?

答えて

2

GitHubの "Squash and merge"は従来のマージではありません。新しいコミットが作成され、ターゲットブランチに早送りされてマージされます。したがって、2つのブランチはコミットグラフ内では無関係であるように見えるので、後続のdiffは混乱する結果を示します。

So S &ソースブランチがエフェメラルである場合、つまりPRが完了した後は必要でない場合は、Mは一般的には良い考えです。だから、通常、短命の機能ブランチには意味がありますが、あなたのユースケースでは意味がありません。

+0

ああ、スカッシュとマージした後、歴史は異なる、そうですか? はリベースしてマージする一般的な方法ですか?だから、「渡す」とみなされるdevのすべてのコミットは、単にマスターにコピーされるでしょうか? – nxmohamad

+0

@nxmohamad - はい、本質的に2つの枝の履歴が分岐します。私はR&Mがうまくいくかどうかは分かりません。一般に、2つのブランチ間の関係がコミット・グラフで明示的であるため、このユースケースの従来のマージを主張します。 –