2012-05-25 123 views
112

我在存储库中有一些跟踪的文件,这些文件在构建代码时会自动修改。我不想解开它们,我只是不希望它们显示为已修改,并且我不希望它们在我添加git时被暂存。Git:忽略跟踪的文件

这可能吗?

+5

的可能重复的[GIT中:ⅰ可以提交一个文件,并忽略含量的变化?](http://stackoverflow.com/questions/3319479/git-can-i-commit-a-file-and-ignore-内容更改) –

+3

如果这些文件由构建自动生成**,则不应在git中对其进行跟踪。 –

+0

下面是关于gitignore的一个快速教程,您可能会发现它很有用:https://learningpassion.wordpress.com/2016/06/17/git-tutorial-day-to-day-use-part-4-gitignore-diff-and -difftools-moving-and-removing-files/ – joker

回答

159

当然。

git update-index --assume-unchanged file 

要撤消并重新开始跟踪:使用

git update-index --no-assume-unchanged [<file> ...] 
+1

如果我对它们进行修改,这种状态下的文件会发生什么? – haymansfield

+1

@haymansfield该命令的帮助页面指出,如果需要在索引中修改此文件,以下Git将失败(优雅),例如合并时提交;因此,在案件的假设未跟踪文件被改变后的上行,则需要处理manually.''' – Parham

+1

@Parham的情况,documenation现在被改为对--assume-不变标志的意图更加清晰由于用户的误解。在Git中,丢失数据将不太合理,因此保存数据的额外对象被认为是“优雅的”。该报价将改变。 –

1

的另一种解决方案GIT中的属性和%F在过滤器命令:

git config filter.orig.clean "cat %f.orig" 
cp filename filename.orig 
echo "filename filter=orig" >> .git/info/attributes 
echo "filename.orig" >> .git/info/exclude 
+4

你能否提供更多细节,说明这意味着什么以及偶然做什么? – rogerdpack

2

另一种方法是保持一个 “跟踪”模板文件,然后有它的本地副本未追踪,例如:https://gist.github.com/canton7/1423106

再就是如果该文件在git中更改等,并且可以在本地未跟踪文件上使用.gitignore(最后),则不会有任何顾虑。

+5

这个答案其实最初是由Seth Robertson发起的,但是它被一个主持人删除*没有评论*(什么?),所以在这里复活了。亲爱的mods:如果你想单方面删除答案,请提供一个理由这样做... – rogerdpack