2

私はgitsvnを使用しており、トランクからsvnに裏打ちされたプロジェクトブランチをマージする必要がありました。ネイティブのsvnマージを使用しようとすると混乱したため、注意して、トランクから1つ、プロジェクトブランチから1つ、合計2つのプレーンなgitブランチを作成し、これらの新しいブランチ間でgitマージを使用しました。

プロジェクトブランチとトランクブランチの間の変更を調べたいと思いますが、作成したマージで追加/削除/変更されたファイルについてのみです。実際の重複はほとんどありませんが、両方のブランチでかなり多くの作業が行われました。

私はうまくいくフォローアップを調理しましたが、エレガントではありません:

$ git diff soa-2237-from soa-2237-to $( git show HEAD |
       grep -E '^[-+]{3}' |
       cut -c7- |
       sort -u)

私はすでにハッキーマージを行っているので、この差分のよりエレガントな表現はありますか?

4

1 に答える 1

5

さて、ファイルのリストを取得するためにを使用する代わりに、を使用git show HEAD | <hacky grep/cut/sort stuff>することもできますgit diff --name-only HEAD~1。これは少し醜くなく、現在HEADの親と最初の親の間で変更があったファイル名を一覧表示します。

また、次のように、ファイル名をコマンドの残りの部分から分離する必要があります。

git diff branch1 branch2 -- $( git diff --name-only HEAD~1 )

これは、名前が。で始まるファイルに遭遇した場合に役立ちます-

現在のブランチではない3番目のブランチを参照してこれを行うこともできます。

git diff branch1 branch2 -- $( git diff --name-only branch3~1 branch3 )

その場合、デフォルトのHEAD引数は適用されないため、ファイルリストを取得するために比較する2つのコミットに名前を付ける必要があります。

于 2013-01-25T19:56:58.107 に答える