代码之家  ›  专栏  ›  技术社区  ›  Å imon Tóth

Git差异忽略

  •  2
  • Å imon Tóth  · 技术社区  · 14 年前

    在git diff期间是否有可能忽略某些文件?我特别想过滤掉Makefile.in,Makefile,configure(以及所有自动生成的垃圾)。

    4 回复  |  直到 14 年前
        1
  •  5
  •   mfontani    14 年前

    您可以尝试将文件列表传递给 git diff ,它将只对这些文件执行diff。

    根据代码的设置方式,它可以简单到:

    git diff otherbranchname -- src/     # only give me diffs from src/
    

    git diff otherbranchname -- $( git ls-files |
        perl -lne'next if /(?:[mM]akefile(?:\.in)?|configure|whateverelse)/;print' )
    # diff all files which don't match the pattern
    

    根据要忽略的文件是否由当前分支中的Git管理,您需要替换 git ls-files 用一个 find * find . 并添加 |.git 到Perl表达式。

    根据需要定制,可能使用您需要的目录/文件名 知道 你想要区分,而不是使用 git ls文件 find .

        2
  •  2
  •   Connor McKay    13 年前

    .git/config

    [alias]
        mydiff = !git diff -- $(git diff --name-only | grep -Ev "([mM]akefile|configure)")
    

    然后运行它:

    git mydiff
    

    请注意 git diff --name-only 比…好 git ls-files 因为它会将一个较短的文件列表传递给 git diff ,因为只包括修改过的文件。在大型项目中使用时,我遇到了超过最大参数数的问题 git ls文件 .

        3
  •  0
  •   elmarco    14 年前

    关于gitignore和autotools集成,您可能会感兴趣git.mk: http://mail.gnome.org/archives/desktop-devel-list/2009-April/msg00211.html

        4
  •  0
  •   Community SushiHangover    7 年前

    详细说明 here exclude 路径规范魔法

    git diff -- . ':(exclude)Makefile*' ':(exclude)configure'