项目里,本来想取消追踪文件,但是发现把文件添加到
.gitignore
文件并不生效,原因是如果文件已经被git追踪,那么需要先取消对文件的追踪并提交,然后再在.gitignore
文件加入目录或文件名,才能生效
最近在项目优化过程中,将项目打包以后生成的 test.html
文件手滑直接提交到GitHub了,结果发现项目的语言占比 html直接飙升到70%,我勒个豆啊吓我一跳,然后潜意识想取消追踪这个文件,于是直接在 .gitignore
文件里加入了 test.html
文件名 ,结果一直不生效,搞得还以为出了什么问题,后来发现,如果文件没有被追踪过,那么直接添加进去可以立即生效,如果文章已经在追踪状态,那么需要先取消追踪然后再添加。
所以还是遇到有问题的不要想当然,动手搜一搜或者查一下,我就一直以为是我文件名写的有什么问题,反复看了几遍死活改不好,摸不着头脑,困惑
一、停止追踪文件
git rm --cached README.md
二、提交更改
git commit -m "chore: stop tracking README.md"
三、在 .gitignore
文件中写入文件名
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
/README.md
PS:附带git忽略文件语法
#注释 .gitignore的注释
*.txt 忽略所有 .txt 后缀的文件
!src.a 忽略除 src.a 外的其他文件
/todo 仅忽略项目根目录下的 todo 文件,不包括 src/todo
build/ 忽略 build/目录下的所有文件,过滤整个build文件夹;
doc/*.txt 忽略doc目录下所有 .txt 后缀的文件,但不包括doc子目录的 .txt 的文件
bin/: 忽略当前路径下的 bin 文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
/bin: 忽略根目录下的 bin 文件
/*.c: 忽略 cat.c,不忽略 build/cat.c
debug/*.obj: 忽略debug/io.obj,不忽略 debug/common/io.obj和tools/debug/io.obj
**/foo: 忽略/foo, a/foo, a/b/foo等
a/**/b: 忽略a/b, a/x/b, a/x/y/b等
!/bin/run.sh 不忽略bin目录下的run.sh文件
*.log: 忽略所有 .log 文件
config.js: 忽略当前路径的 config.js 文件
/mtk/ 忽略整个文件夹
*.zip 忽略所有.zip文件
/mtk/do.c 忽略某个具体文件