git中忽略文件且不添加到.gitignore文件

前言

记一次添加 git 忽略文件不添加到 .gitignore

正文

写一些需求的时候,有时会随手创建一些 test.js 来跑一些代码

git add 然后 commit 提交的时候,很容易忘记把它排除掉

但是又不想因为这个文件污染 .gitignore 文件

这时候,就要使用另一种方式来添加要排除的文件

git 中,每个项目的根目录下都会有 .git 文件夹

由于这个文件夹是隐藏的,所以可能你会看不到

这时候就要设置资源管理器显示隐藏目录了(这里我使用的是window11)

找个 .git 文件夹之后,进入这个文件夹

在这个文件夹里面,找到 info/exclude

然后用记事本打开它,发现是个空文件

不过顶部有一些注释

1
2
3
4
5
6
# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

可以看到,最后两行给了我们两个例子

  • *.[oa]
  • *~

在注释中提到这是 C 项目可能会用到的注释

当然,我是个切图仔,所以添加的一般是一些 testjs 文件

所以我们可以加一行

  • *.test.local.js

然后 ctrl + s 保存后关闭

回到 vscode 中,我们建一个 1.test.local.js ,随便写点内容

然后使用 git status 查看工作区的状态

发现此时工作区是干净的,也就是 git 没有对 1.test.local.js 这个文件进行追踪

当然目前这种添加是项目级别的

那我要是想全部的项目都排除某个文件,那要如何操作呢

这时候需要配置 git configgit config 中,我们可以指定全局的 .gitignore 文件

git-config文档:git-config

进上面的地址然后 ctrl + f 搜索 core.excludesFile ,然后就可以找到下面这段内容

Specifies the pathname to the file that contains patterns to describe paths that are not meant to be tracked, in addition to .gitignore (per-directory) and .git/info/exclude.
Defaults to $XDG_CONFIG_HOME/git/ignore.
If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.

指定一个除了每个项目下的 .gitignore.git/info/exclude 之外的不被 git 跟踪的文件
默认的位置为 $XDG_CONFIG_HOME/git/ignore
如果 $XDG_CONFIG_HOME 环境变量不存在,则使用 $HOME/.config/git/ignore

由于我电脑上 git 是在 window10 的时候装的,然后期间我又格盘装了 window11

所以 git 的环境变量基本没了,这里就试着指定一个绝对路径来试试

在控制台下输入 git config --global core.excludesFile E:\ignore

为全局的 git 配置 core.excludesFile

然后我们在 E:\ignore 随便写个规则

就写 index.js ,可恶的 index.js 今天定让你有来无回!

先通过 git config -l 看看当前的配置

没问题 E:\ignore 已经在配置中的

然后写个 index.js,然后依然执行 git status 查看工作区的状态

一个干净的工作区,哈哈哈哈哈

后记

记得要去掉配置,不然代码没提交上去不关我事啊

删掉配置的指令 git config --global --unset core.excludesFile

然后再次 git statusindex.js 现在就可以被添加了