2011-09-01 22 views
20

私はプロジェクトで(単独で)作業していますが、私が開発したすべての機能に対して、新しいブランチを作成し、この機能を使ってマスターにマージします。だから、通常は一度に2つの異なるブランチで作業することはなく、ブランチで作業している間はマスターに触れることはありません。マージ後のGitブランチとコミット履歴

私はマスターブランチの歴史は、私がマージされたブランチに行ってきたすべてのコミットを取得します(gitxgitkを使用して)ことがわかりブランチをマージします。マージ後

master a-b-c-d 
       \z-x-y-- 
       |branch name 

私が手に:私は、私のようなものを持っている場合は意味

a-b-c-d-z-x-y 
      |branch name 

はい、私はマージされたブランチ名は(gitxgitkを使用して)強調表示を参照してくださいしかし、私は期待していたことは何かでありますだから私は、いや、私はマスターしやったマージを表す「M」コミットを確認するために期待してい

master a-b-c-d--------M-- 
       \-z-x-y-/ 
       |branch name 

:コミットが似(どの枝に)行われている場所を正確に示します私が新しいブランチに行ったすべてのコミットがマスターに行われたように見えるようにする。

私の期待は正しいですか?またはこれは正常なgitの動作ですか?

答えて

29

これは通常のGit動作です。ブランチがmasterブランチより厳密に先行しているため、「早送り」マージと呼ばれる処理を行っています。

実際にブランチの履歴を保存したい場合は、git merge --no-ffを使用して、早送りの更新ができる場合でも強制的にマージコミットを作成することができます。

+5

フィーチャーブランチでマージするときに '--no-ff'を使うといくつかの利点があります。主なものは、機能を戻すためのワンショットの復帰だということです。 –

+0

この有益な情報をありがとうございました。 @Cameronはなぜそれが推奨されないのか説明していただけますか?私はすべての私の古い合併を "再予約"できますか? (これは基本的に私のプロジェクトに関するレポートを書く必要があるため、私の支店のスクリーンショットが役立つでしょう) – Ansd

+2

@Ans:私はそれを使用することは決して見つけられていないので、単にそれをお勧めしません。できるだけシンプルかつリニアな「マスタ」履歴を保つことを好みますが、一度統合されると機能ブランチを気にする必要はありません。ワンショットの復帰についてのダンレイのポイントは有効ですが、それは 'no-ff'を使う良い理由かもしれません。あなたはおそらくあなたのブランチヒストリーを簡単に再生成することはできませんが、まだすべての古いブランチを持っていれば、それらをマスターにマージしたのと同じ順序ですべてのフィーチャーをマージするブランチを手動で生成することができます。 –

関連する問題