Git 用户级别忽略文件

  • 13 Oct 2020
  • Git

接手一个项目,用 Git 做版本控制,其中有一个配置文件(暂且称为 app.config) 被加入到了版本控制,但是如果要在本地跑起来这个项目,需要改动这个配置文件中的几个值,但是又不能提交到远程仓库。

上面是背景,先不管这种配置文件管理方式和不合理,如何在自己的开发环境中忽略这个配置文件的改动而不影响其他协作者呢?

用过 Git 的人都熟悉 .gitignore,它管理一些规则控制 Git 忽略指定的文件,并且这些规则可以被加入到版本控制,在这个项目的所有克隆中都生效。还有一个没那么常用的文件有类似的功能,它就是 $GIT_DIR/info/exclude ($GIT_DIR 一般来说就是 .git 目录)。它的规则和 .gitingore 有同样的作用,不同的是这个文件不会被加入到版本控制中,这些规则只对本地环境有效。

比如我想在本地忽略项目中的 app.config 文件,但不希望影响其他协作者,在 $GIT_DIR/info/exclude 中加入下面的配置就可以了。

app.config

然而,如果该文件已经存在于版本控制中,改动 .gitignore 或者 $GIT_DIR/info/exclude 都不够,需要通过

git update-index --assume-unchanged FILE_PATH

来告诉 Git 不再跟踪该文件是否有更新。这个操作也只在本地环境有效。

如果想恢复追踪文件更新,执行:

git update-index --no-assume-unchanged FILE_PATH
COMMENTS

no comments