不清楚的 .gitignore

起因:

在项目 .gitignore 看见了部分配置如下:

bash 复制代码
node_modules
/dist
.history

/.history/src/views/incomeData/incomePool/list_20230209102341.vue
/.history/src/views/incomeData/incomePool/list_20230209102421.vue
/.history/src/views/incomeData/incomePool/list_20230209102435.vue

.vscode
.vscode/

你是否也觉得这个忽略文件怪怪的,但知识它在脑子里又不那么清楚 🫣

  1. node_modules一般配置是 node_modules/,他们有什么区别?
  2. /dist前面加不加/有区别吗?
  3. 配置过了 .history,后面三条还有必要? 难道 .history配置后内部文件不忽略??
  4. .vscode和.vscode/不重复?

下面逐个分析

1. node_modules一般配置是 node_modules/,他们有什么区别?

node_modules:忽略任意层级路径中,名为 node_modules 的路径项

  • 如果该路径项是 文件
    👉 忽略该文件
  • 如果该路径项是 目录
    👉 忽略该目录 及其全部子内容

node_modules/: 忽略任意层级路径中,名为node_modules的目录(及其全部子内容)

虽然它们都能实现忽略 node_modules目录

但node_modules规则本身语义不明确,从规则本身无法一眼判断

  • 要忽略文件?
  • 还是忽略目录?

node_modules/一眼就知道要忽略这个目录,所以在忽略目录的时候更推荐这种写法

2. /dist前面加不加/有区别吗?

有区别

dist:忽略任意层级 路径中,名为 dist 的路径项

/dist:忽略根目录 下名为dist的路径项

3. 配置过了 .history,后面三条还有必要? 难道 .history配置后内部文件不忽略?

现在我们已经知道 .history的含义(忽略任意层级路径中,名为 .history 的路径项),

bash 复制代码
/.history/src/views/incomeData/incomePool/list_20230209102341.vue
/.history/src/views/incomeData/incomePool/list_20230209102421.vue
/.history/src/views/incomeData/incomePool/list_20230209102435.vue

很明显这三个文件都是目录 .history下的内容,配置.history已经包含,完全可以删掉这三条.

.history是常见vscode 插件生成的目录,故推荐写法.history/.

4. .vscode和.vscode/不重复?

重复

想必到这里已经非常明确的知道他们的区别了(不明白看第一个问题),.vscode是常见 IDE 配置目录,所以推荐.vscode/

成果展示

现在要修改文章开头的 .gitignore,易如反掌

bash 复制代码
node_modules/
dist/
.history/
.vscode/

至于前面要不要加/自行判断需要忽略任意层级路径中的目录 还是仅根目录

扩展

bash 复制代码
# 1️⃣ * 通配符: 匹配任意字符(不含/)
# 忽略所有 .log 结尾的路径项
*.log 


# 2️⃣ !反向忽略
# 2.1 忽略 .vscode 目录下所有内容,但保留项目级 VS Code 配置
.vscode/*
!.vscode/settings.json
# 2.2 忽略所有 .env,但保留示例文件
.env
!.env.example

为什么反向忽略例子2.1用的是.vscode/*而不是.vscode/

用一个例子解释,目录结构:

复制代码
.vscode/
  settings.json
  launch.json

1️⃣ 使用 .vscode/

含义:

忽略名为 .vscode 的目录

一旦该目录被忽略,其内部所有文件都会被隐式忽略

结果:

复制代码
.vscode/            ❌
  settings.json     ❌
  launch.json       ❌

git 已经忽略 .vscode 目录,不会再进入该目录,无论写多少个反向忽略,都没用

2️⃣ 使用 .vscode/*

含义:

忽略 .vscode 目录下的 所有直接子路径

但 .vscode 目录本身 仍然是"可见的"

结果:

复制代码
.vscode/            ✅
  settings.json     ❌(除非反向忽略)
  launch.json       ❌

在此基础上添加反向忽略,git才能识别.

有趣 🌾

相关推荐
jktantan3 小时前
Vue keep-alive 切标签后滚动位置回顶?因为 onDeactivated 里读到的 scrollTop 是 0
前端·javascript·vue.js
2601_962885724 小时前
quotes 字段全解:涨跌幅、振幅、换手率的口径与单位
java·前端·spring
excel5 小时前
encodeURI 和 encodeURIComponent 有什么区别?
前端
前端精髓5 小时前
调用openrouter的免费API模型
java·前端·javascript
赛博守夜人5 小时前
AI安全攻防与治理之十四:AI 安全测试不能脱离传统安全,Web、API、移动端与模型攻击面的组合拳
前端·人工智能·安全
开开心心_Every5 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
networknomad5 小时前
OpenReplay:自己搭的会话回放工具,给前端排错用的
前端·其他
缓慢更新6 小时前
AI 辅助生成单测:从接口定义到用例的流水线
java·服务器·前端·网络·数据库·人工智能
陈随易7 小时前
AI 运维服务器,安全又可靠的方法
前端·后端·程序员
风骏时光牛马8 小时前
AI稳定性治理体系构建与疑难问题深度分析
前端