2017-01-20 10 views
1

はのは、このようなツリー何かを想像してみましょうコミット特定からのみ変更されたファイルを取得:のgit -

このリポジトリに
 d---g---i   feature 1 
    /  \ 
    / c---f \   feature 2 
    // \ \ 
---a---b---e---h---j---n master 
      \   
      k---l---m  feature 3 

、ファイル(SQL、XML、DLL ...)のミックスがありますが。さて、フィーチャー1と2と3から変更された(または追加された)ファイルのみをリストアップしたいと思います(フィーチャー3はまだ完成していませんが、スクリプトを変更してテストするためにそれを一部の顧客に適用する必要があります)。私は本当に変更されたファイルが必要です。リポジトリ全体からすべてのスクリプトを顧客に再適用することはできません。

+1

変更点は*何かに関するものです。各コミットは単なるスタンドアロンなので、コミットを変更に変えるには、* other * commitを選択してから2つのコミットをdiffしなければなりません。たとえば、コミット 'g'(' git diff g i')に対して 'i'をコミットすると、' g'から 'i'に変更したものが表示されます。ここでの主な問題は、各機能ブランチが異なる開始点から開始するため、このプロセスの開始点が明白ではないことですが、実際には、正しい*開始点は顧客が今日のものになることです。 – torek

+0

私は、マスターブランチの最初のコミットと特定のブランチの最後のコミットの間に違いがある場合、私はthiseファイルを持っていると思います。したがって、特徴1:git diff a i、特徴2:git diff b f、特徴3 git diff e m。しかし、私の問題は、これらのコミットを見つける方法です。私は約100の特徴があるなら、全体のログを勉強したくないです。しかし、多分私はこの戦略について悪い考えを持っているかもしれません。 – David

+0

あなたが必要とするのは、その顧客が持っている(hと言う)コミットとテストしたい(mと言う)ことです。 'git diff --stat h m'は両者の間で変更されたファイルを与えます。 –

答えて

0

各コミットはリポジトリの完全なスナップショットです。

だからgit diff h mは、2つのコミットの生の違いを教えてくれるでしょうhm、その2つの間には何も変わりません。

これを--statまたは--name-onlyと組み合わせて、変更されたファイルを取得します。

+0

これは当てはまりますが、リポジトリの場合、100のフィーチャを使用すると、正しいコミットを見つけて差をつけることは難しくなります。なぜなら、私は単にフィーチャー2と開発者の間に違いを生じさせたくないからです。私はコミット** bとf **の間に差をつけたいと思います。これは、機能2でのみ行われた変更を返します。私の考えでは、機能は変更されたファイルのセットです。そして、私が知りたいのは、speficic機能でどのような変更が加えられたのかです。これは、他のリポジトリやこれらのファイルで同様の変更を行うことができます。しかし、たぶん、プロジェクトの悪いことを理解しているかもしれません:-) – David