git status:如何忽略一些变化

时间:2010-04-20 16:25:39

标签: git-status

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

背景

我的存储库中有一些文件是自动生成的(是的,我知道通常不建议使用,但我没有权力更改它)。每当我构建我的树时,这些自动生成的文件都会在其中更新状态信息(生成它们的人,时间戳等)。

当我说git status时,我希望它能够对这些生成的文件运行一个过滤器来消除这种瞬态状态信息。如果还有其他真正的变化,我只希望它出现在git输出的"Changed but not updated:"部分。

使用https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes处的.gitattributes方法,我可以使用简单的git diff过滤器让egrep忽略这些状态行更改。我希望git status也使用textconv过滤器(或类似的东西)。

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

3 个答案:

答案 0 :(得分:2)

您还可以使用过滤器隐藏您对git的更改。指定“清理”过滤器,将“清理”不必要的更改(将Git的文件版本提供给Git),这样它就不会看到更改(但它仍然可以在“git status”中列出文件)。

详细信息:Better way of making Git to turn a blind eye on my changes

另见这个问题的其他答案,他们也忽略了变化。

答案 1 :(得分:1)

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

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

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

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

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

答案 2 :(得分:0)

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

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