让git仅跟踪文件

时间:2016-04-30 16:53:49

标签: git gitattributes

我对gitattributes感到困惑。

我不确定我尝试做的事情是否可行:我的IDE为我的项目生成了一个设置文件,这个文件经常更新。它基本上是一个文本文件,但建议不要在文本模式下编辑它。我允许自己添加和编辑文件的某些部分,但我让IDE的GUI完成剩下的工作,否则我可能会遇到问题。

部分文件由GUI更改,部分文件由我更改。 我希望git忽略更改或添加GUI所做的行,但跟踪我所做的更改。

我可以将GUI的变化融入模式,反之亦然。例如,下面的命令只能打印我想告诉git跟踪的行:

egrep -v (WORDS|THAT|APPEAR|IN|LINES|I|DON'T|WANT|GIT|TO|TRACK) <setting-file>

我遇到了gitattributes herehere。所以我使用上面的命令创建了一个过滤器,并将其放在我smudge的{​​{1}}和clean中。我设法让它工作但问题是:我不希望git实际删除不通过过滤器的行。我只想让git忽略对这些行的任何更改。

希望我能说清楚。

1 个答案:

答案 0 :(得分:1)

不,Git不能这样做。

如果您的IDE的配置格式支持包含文件,您可以将所需的设置拆分为单独的文件(由Git跟踪),并将其包含在主配置中(您应该将其添加到{{1}所以它不会打扰你。)

如果它没有,你仍然可以找到一种方法来隐藏设置而不跟踪主配置。例如,如果您要强制执行代码样式设置,则应尝试.editorconfig

关于自动化可以带你去做的事情。还有@jthill建议的半手动方法,您可以编写一个脚本来更改您想要的设置,但是您必须记住在适当的时候运行它。

(只是一句话:存储IDE或编辑器文件 - 保存为.gitignore - 在任何有多个开发人员/机器的项目中被认为是不好的做法。冲突几乎是不可避免的,你甚至可以遇到它们如果你独自一人,但又有两台机器 - 像安装路径这样的差异可能渗透到配置中并让你的生活变得地狱,每次你在另一台机器上提交配置时都会在一台机器上破坏构建。)