ignoring changes matching a string in git diff

前端 未结 4 1267
不思量自难忘°
不思量自难忘° 2020-12-08 06:53

I\'ve made a single simple change to a large number of files that are version controlled in git and I\'d like to be able to check that no other changes are slipping into thi

4条回答
  •  囚心锁ツ
    2020-12-08 07:25

    No more grep needed!

    With Git 2.30 (Q1 2021), "git diff"(man) family of commands learned the "-I" option to ignore hunks whose changed lines all match the given pattern.

    See commit 296d4a9, commit ec7967c (20 Oct 2020) by Michał Kępień (kempniu).
    (Merged by Junio C Hamano -- gitster -- in commit 1ae0949, 02 Nov 2020)

    diff: add -I that ignores matching changes

    Signed-off-by: Michał Kępień

    Add a new diff option that enables ignoring changes whose all lines (changed, removed, and added) match a given regular expression.
    This is similar to the -I/--ignore-matching-lines option in standalone diff utilities and can be used e.g. to ignore changes which only affect code comments or to look for unrelated changes in commits containing a large number of automatically applied modifications (e.g. a tree-wide string replacement).

    The difference between -G/-S and the new -I option is that the latter filters output on a per-change basis.

    Use the 'ignore' field of xdchange_t for marking a change as ignored or not.
    Since the same field is used by --ignore-blank-lines, identical hunk emitting rules apply for --ignore-blank-lines and -I.
    These two options can also be used together in the same git invocation (they are complementary to each other).

    Rename xdl_mark_ignorable() to xdl_mark_ignorable_lines(), to indicate that it is logically a "sibling" of xdl_mark_ignorable_regex() rather than its "parent".

    diff-options now includes in its man page:

    -I

    --ignore-matching-lines=

    Ignore changes whose all lines match .
    This option may be specified more than once.

    Examples:

    git diff --ignore-blank-lines -I"ten.*e" -I"^[124-9]"
    

提交回复
热议问题