On Thu, Aug 24, 2023 at 06:08:18PM -0400, Alexei Podtelezhnikov wrote: > I find this sections of the docs confusing: > > git diff -G (https://git.kernel.org/pub/scm/git/git.git/tree/Documentation/diff-options.txt#n656) > > I do not follow why the example talks about `git log -G` and commits. > I see that thai file is included in git-log .txt but I do not > understand how to use git diff -G. I agree that it can be somewhat confusing :-). The linked section DIFFCORE-PICKAXE in gitdiffcore(7) may be helpful: DIFFCORE-PICKAXE: FOR DETECTING ADDITION/DELETION OF SPECIFIED STRING This transformation limits the set of filepairs to those that change specified strings between the preimage and the postimage in a certain way. -S<block of text> and -G<regular expression> options are used to specify different ways these strings are sought. [...] "-G<regular expression>" (mnemonic: grep) detects filepairs whose textual diff has an added or a deleted line that matches the given regular expression. This means that it will detect in-file (or what rename-detection considers the same file) moves, which is noise. The implementation runs diff twice and greps, and this can be quite expensive. To speed things up binary files without textconv filters will be ignored. So if I have a setup like: $ git init repo $ git -C repo commit --allow-empty -m base $ for c in a b; do echo $c>repo/$c && git -C $repo add $c; done $ git -C repo commit -m changes Then you can see `-G` has the effect of limiting the output of 'git diff' to just those file(s) whose diff matches the regular expression given to `-G`, like so: $ git -C repo diff --stat HEAD^ a | 1 + b | 1 + 2 files changed, 2 insertions(+) $ git -C repo diff --stat HEAD^ -G a a | 1 + 1 file changed, 1 insertion(+) $ git -C repo diff --stat HEAD^ -G b b | 1 + 1 file changed, 1 insertion(+) (I'm using --stat here to keep the output brief, since the contents are only important insomuch as files "a" and "b" match the regular expressions "a" and "b", respectively). Thanks, Taylor