瞎扯淡 在 Git 的监视下 偷偷摸摸

lyb124553153 · 2019年07月08日 · 最后由 BlindingDark 回复于 2019年07月30日 · 2015 次阅读

GIT 提供了几种方式让你的本地文件修改,不被 GIT 追踪。

.gitignore

只要在.gitignore 里面加入你自己的文件,那么git 就会忽略这些文件,不去追踪,可以说说大部分人的解决方案。

.git/info/exclude

修改.gitignore会告诉别人你忽略了哪些文件。 程序员是一个充满了鄙视链的职业,用 IDE 的同学 一但在.gitignore 里面加入了 IDE 的配置文件 ,很快就会被同事拿鼻孔看。 建议大家不要冒这种风险。 这个时候 .git/info/exclude 文件就派上用场了,把你要忽略的文件写入.git/info/exclude,一样会被git 排除,而且排除设置都是是保存在本地,所以排除信息不会共享到远程仓库 ,适用于一些不想跟别人分享的忽视。

以上方法都只适用未被git追踪的文件,一但被git 追踪就没用了,但是接下来就有请下两个方法

git update-index --assume-unchanged

有些文件是要临时性排除的, 比如我在项目中,每次一跑 db:migrate ,schema.db 上都会出现一堆不属于自己的改动。虽然可以直接手动撤销,但是如果有多次migrate,每次都去撤销就比较费事的。 git update-index --assume-unchanged filename告诉 git 。这个文件不是我改的,你别瞎说啊。 但是这个时候文件仍然在git的监视下,本地修改会被检出分支覆盖

如果有需要提交的改动 可以用 git update-index --no-assume-unchanged <file> 来撤销申明。

git update-index --skip-worktree

比 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

这条命令基本用于各种需要本地定制化的文件

共收到 6 条回复
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册