2010-04-20 329 views
4

有没有办法让git status忽略文件中的某些更改?git status:如何忽略一些变化

背景

我在我的仓库是自动生成的(是的,我知道这是通常不推荐的,但我没有能力改变这一点)的一些文件。每当我构建树时,这些自动生成的文件都会更新状态信息(生成它们的人,时间戳等)。

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

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

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

回答

0

我想我会按照我一直在使用的两种解决方法报到:从自动生成的文件

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

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

详情:Better way of making Git to turn a blind eye on my changes

也看其他回答这个问题,他们也即将忽视的变化。

1

一个简单的解决方案是,在文件名或路径运行以下命令要忽略的变化:如果你想开始跟踪变化再次运行以下命令

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

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

您将不得不记得在有想要提交的更改时再次开始跟踪。

+0

感谢您的建议;不幸的是,我不想完全忽略这些文件。我只想忽略文件中的某些类型的更改。 – 2014-01-30 18:13:58