2016-08-31 6 views
0

別のブランチフィーチャ1から新しいブランチフィーチャ2を作成すると、masterとマージされなかったフィーチャ1の変更されたファイルも含まれます。 feature1とfeature2の変更を分ける方法はありますか?別のブランチからGitブランチを作成し、結合解除されたファイルを無視するには?

+1

あなたは 'コミットされていないファイルをstash'しようとしたことがありますか? https://git-scm.com/docs/git-stashを参照してください。コミットされていないファイルを使用せずに新しいブランチを作成することができます。 –

+0

これらのファイルは別のブランチ(機能1)でコミットされました。 – Stanislav

+3

フィーチャ1の変更をフィーチャ2に含めることを望まない場合、フィーチャ2をブランチフィーチャ1から作成するのはなぜですか? masterからfeature2を作成するだけで、feature1のものは含まれません。 – lucash

答えて

0

ブランチフィーチャ2を「このブランチを比較するときにフィーチャ1からの変更を表示しない」とマークすることはできません。これが可能だった場合、feature2をマージするときに問題が発生します。feature1からの変更がマージされます。この場合は、マージされますが、diffには表示されません。または、フィーチャ1の変更がマージされず、フィーチャ2がそれらの変更に基づいている場合に問題につながります(フィーチャ1で追加された新しいファンクションがフィーチャ2で呼び出されるなど)。あなたはまた、これらの変更を確認するためにコミットごとに差分を見ることができる-pオプションを追加することにより

git log ^feature1 ^master feature2 

:あなたが特長2の一部が、特長1のもマスターのでもないすべてのコミットを表示することができますしかし

。あなたが望むものに思える

+0

これは 'git log'では動作しますが、' git diff'では動作しません。 'git diff^feature1 master feature2'はあなたが思っていることをしません。実際には、 'feature1'で特定されたコミットと' feature2'で指定されたコミットを区別して、 'git diff feature1 feature2'を実行します(' feature1'と 'master'を実行するかもしれません。実際のテストケース私はちょうどメモリから行く)。理由はhttp://stackoverflow.com/q/38648906/1256452を参照してください。 – torek

+0

ありがとう、私のテストケースがgit diffの問題を見るには単純すぎるようです。私は答えからその部分を削除し、 'git log'の使用法に減らしました。 – lucash

0

はそうfeature1からコミットを紹介しませんfeature1masterfeature2をマージ、それはmasterにしてfeature1の両方にある最新のコミットにfeature2をオフに開始することです。あなたは見つけることgit-merge-baseコマンドを使用してこれを行うことができる2つの支店で共有する最新のコミット:

git checkout -b feature2 $(git merge-base --fork-point master feature1) 
関連する問題