GIT 提供了几种方式让你的本地文件修改,不被 GIT 追踪。
只要在.gitignore 里面加入你自己的文件,那么 git 就会忽略这些文件,不去追踪,可以说说大部分人的解决方案。
修改.gitignore 会告诉别人你忽略了哪些文件。 程序员是一个充满了鄙视链的职业,用 IDE 的同学 一但在.gitignore 里面加入了 IDE 的配置文件,很快就会被同事拿鼻孔看。 建议大家不要冒这种风险。 这个时候 .git/info/exclude 文件就派上用场了,把你要忽略的文件写入.git/info/exclude,一样会被 git 排除,而且排除设置都是是保存在本地,所以排除信息不会共享到远程仓库,适用于一些不想跟别人分享的忽视。
以上方法都只适用未被 git 追踪的文件,一但被 git 追踪就没用了,但是接下来就有请下两个方法
有些文件是要临时性排除的,
比如我在项目中,每次一跑 db:migrate,schema.db 上都会出现一堆不属于自己的改动。虽然可以直接手动撤销,但是如果有多次 migrate,每次都去撤销就比较费事的。
git update-index --assume-unchanged filename
告诉 git。这个文件不是我改的,你别瞎说啊。
但是这个时候文件仍然在 git 的监视下,本地修改会被检出分支覆盖
如果有需要提交的改动 可以用 git update-index --no-assume-unchanged <file>
来撤销申明。
比 assume-unchanged 的方式 更进一步 是 skip-worktree,适用于 希望某些配置文件不会随着 git 更新而发生变化的时候用
区别是 assume-unchanged 是告诉 git 你没改过,所以检出分支,git 会把对应更新还原到分支的状态。
如果你想修改 git 追踪了的文件 举个例子 项目里有个 .rubocop.yml
Metrics/LineLength:
Max: 113
行代码就这么低的分数,根本不适合我,直接改成
Metrics/LineLength:
Max: 1000
因为 rubocop 已经被 git 追踪,如果把这么优秀的分数分享给同事,可能招来嫉妒的目光,顺便
git update-index --skip-worktree .rubocop.yml
这条命令基本用于各种需要本地定制化的文件