代码之家  ›  专栏  ›  技术社区  ›  Mr Fooz

Git状态:如何忽略某些更改

  •  4
  • Mr Fooz  · 技术社区  · 14 年前

    有没有办法 git status 忽略文件中的某些更改?

    背景

    我的存储库中有一些文件是自动生成的(是的,我知道这通常是不推荐的,但我没有能力更改)。每当我构建树时,这些自动生成的文件中都会更新状态信息(由谁生成、时间戳等)。

    当我说 GIT状态 ,我希望它对这些生成的文件运行一个过滤器,除去这些临时状态信息。我只想让它出现在 "Changed but not updated:" Git输出的一部分(如果有其他真正的更改)。

    使用 .gitattributes 找到的方法 https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes ,我可以 git diff 使用简单的 egrep 过滤器。我想得到 GIT状态 还用 textconv 过滤器(或等效物)。

    如果合并不受任何过滤的影响,我更喜欢它。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Community Egal    7 年前

    您还可以使用过滤器来隐藏对Git的更改。指定“清除”过滤器,它将“清除”不必要的更改(将Git的文件版本馈送给Git),这样它将看不到更改(但它仍然可以在“Git状态”中列出文件)。

    细节: Better way of making Git to turn a blind eye on my changes

    也可以看到这个问题的其他答案,它们也忽略了更改。

        2
  •  1
  •   amitmula    10 年前

    一个简单的解决方案是,对要忽略其更改的文件或路径运行以下命令:

    git update-index --assume-unchanged <file>
    

    如果要再次开始跟踪更改,请运行以下命令:

    git update-index --no-assume-unchanged <file>
    

    当需要提交更改时,您必须记住再次开始跟踪。

        3
  •  0
  •   Mr Fooz    13 年前

    我想我会报告我一直在使用的两个解决方法:

    • 从自动生成的文件中删除状态信息。
    • 具有执行的更新程序脚本 git checkout origin ... 作为构建的一部分,对于任何没有语义更改的生成文件。
    推荐文章