2012-01-10 13 views
1

最新の安定版のコードが であるgitワークフローが、私たちのmasterブランチに含まれています。継続的な開発とバグ修正は別々のブランチにある で処理され、 がマスタにマージされる前にテスト用のステージングブランチにマージされます。バグ修正をステージングブランチにマージする前に、 の開発者はステージングブランチをバグ修正ブランチ にマージして、 マスターから分岐したために発生した変更をテストします。すべてがうまくいけば、バグ修正ブランチがステージングブランチにマージされます。 このプロセスでは、変更されたすべてのファイルのリストを、 というバグ修正の結果として提供する必要があります。我々は、 を使って開発者に負担をかけたくないのですが、 がmasterから分岐してからリストを生成してから をステージングにマージする前に、それらのブランチにタグを付けるなどの作業を強いることによって、だから、 上で変更されたファイルを、ステージングブランチにマージされた後のバグ修正ブランチを決定する最善の方法は何ですか? 基本的には、commit(1)で始まって変更されたファイルが必要ですが、 は、ステージングブランチをバグフィックス ブランチにマージした結果、変更されたファイルはありません。どの程度git:ブランチ上で変更されたファイルを確認する

master (A)---(B)-----------------------(G) 
       \      /
staging   \ (C)---(D)-----(E)-(F) 
       \     \/
bugfix   (1)---(2)---(3)---(4) 
+0

[どのように変更されたすべてのファイルを表示することができますが重複する可能性Gitの支店で](http://stackoverflow.com/questions/8746636/how-can-i-view-all-files-changed-on-a-branch-in-git) –

答えて

2

マージで邪悪な何もしなかったと仮定すると、コミット(4)及び(F)に必要なものは次のとおりです。あなたが本当に空想になりたい場合は

git diff --name-only commit-B commit-3 

は、あなたがこれを行うことができます:

git diff --name-only $(git merge-base bugfix~1 master) bugfix~1 

git merge-base(3)コミットすなわち、2つの名前付きのコミットの最新の共通の祖先を見つけ、bugfix~1bugfix前のコミットを指します。

ステージング分岐が複数回マージされた何らかの理由場合、あなたはいくつかのように差分を行い、組合を取る必要があるだろうが、例えば:

(git diff --name-only B 3; git diff --name-only 5 13) | sort -u 
+1

これは明らかに共通のワークフローなので、開発者はブランチを作成するときにブランチポイントにタグを付けることで、やや簡単に作業を進めることができます。だから後で、 'git diff --name-only-only bugfix_start bugfix〜1'を実行することができます。 – wadesworld

+0

*タグ*を使用する場合は、誤って周囲に伝播しないように注意してください。特に、 'git pull'はデフォルトでタグを取得しますので、開発者同士が直接引っ張ってくると、すばやくreposにたくさんの一時タグを持つ全員になります。 (私はちょうどタグを使ったほうがよいでしょう) – Cascabel

+0

好奇心で、他のブランチの開始をマークする以外の目的でブランチを提唱していませんか?ブランチの開始点を見つけるのは困難ではないが、あまりにも曖昧なことがあるので、私はタグを提案した。あなたはこう言っています: 'git checkout -b bugfix; git checkout -b bugfix_start'?おそらく私は誤解しています。すべての開発者がより簡単な方法でバグ修正ブランチの開始点を知る必要がある場合は、ブランチまたはタグを伝播する間に実際に違いがありますか? – wadesworld

0

:これはあなたのバグ修正との差分を与える必要があります

git checkout bugfix 
git diff HEAD~1 master 

は、マージとマスターの前にコミットします。

+0

3つの問題:必要はありませんチェックアウトし、 'HEAD〜1'ではなく' bugfix〜1'を使ってください。バグ修正とは何の関係もない他の変更を拾い上げたので、あなたはマスターに対して相違したくありません。 OPが望んでいるようなファイルの一覧ではなく、完全な差分を表示します。 – Cascabel

+0

注目。あなたからの素晴らしい答え - 投票されました。 – wadesworld

関連する問題