2

我对 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 这里这里遇到过。所以我用上面的命令创建了一个过滤器,我把它放在我smudge的. 我已经设法使它工作,但问题是:我不希望 git 实际删除未通过过滤器的行。我只想让 git 忽略对这些行的任何更改。clean~/.gitconfig

希望我说清楚了。

4

1 回答 1

2

不,Git 不能那样做。

如果您的 IDE 的配置格式支持包含文件,您可以将所需的设置拆分为一个单独的文件(由 Git 跟踪),然后将其包含到主配置中(您应该添加.gitignore它,以免打扰您。)

如果没有,您仍然可以找到一种方法在不跟踪主配置的情况下潜入设置。例如,如果您要强制执行代码样式设置,您应该尝试.editorconfig.

这就是自动化可以带你走的最大程度。@jthill 还建议了一种半手动方法,您可以在其中编写一个脚本来更改您想要的设置,但您必须记住在适当的时候运行它。

(只是备注:存储 IDE 或编辑器文件(保存).editorconfig在任何具有多个开发人员/机器的项目中被认为是一种不好的做法。冲突几乎是不可避免的,即使你一个人但有两台机器——安装路径之类的差异可能会渗透到配置中,让你的生活变得地狱,每次你在另一台机器上提交配置时都会破坏一台机器上的构建。)

于 2016-05-01T10:35:08.720 回答