Search code examples
gitgit-diff

List files whose changes (diff) contain a given string?


Is there a simple git command to list files whose diffs contain a given string, or will I have to iterate?

I need to commit a refactoring (method name change) separately from other changes, so I need to identify files whose diffs contain the new method name.


Solution

  • You can use the -S (string) or -G (regexp) parameters of the diff command to filter with a specific string.

    git diff --name-only -S"your_method_name"
    

    And only files where this specific string appears in the changes will show up in the list.

    Take a look here in the doc :

    -S<string>

    Look for differences that change the number of occurrences of the specified string (i.e. addition/deletion) in a file. Intended for the scripter’s use.

    It is useful when you’re looking for an exact block of code (like a struct), and want to know the history of that block since it first came into being: use the feature iteratively to feed the interesting block in the preimage back into -S, and keep going until you get the very first version of the block.