当前位置: 首页 > ops >正文

.gitignore 文件 记录

目录

核心方法:使用 .gitignore 文件

1. 创建 .gitignore 文件

2. 编辑 .gitignore 文件

针对你的问题的具体示例

3. 特殊情况:已经跟踪的文件

4. 验证是否生效

总结

原因一:规则写错了(可能性较小)

原因二:文件已经被 Git 跟踪了(可能性极大!)

解决方案:让 Git 停止跟踪该文件

总结


核心方法:使用 .gitignore 文件

.gitignore 文件是一个纯文本文件,你可以在其中列出你希望 Git 忽略(即不跟踪)的文件和目录的模式。

1. 创建 .gitignore 文件

首先,你需要在你的 Git 仓库的根目录下创建一个名为 .gitignore 的文件。

# 进入你的项目根目录
cd /path/to/your/project# 创建 .gitignore 文件 (Linux/macOS)
touch .gitignore# 或者在 Windows 上用命令行创建
type nul > .gitignore# 你也可以使用任何文本编辑器(如 VSCode, Notepad++)直接创建并编辑它
code .gitignore
2. 编辑 .gitignore 文件

在 .gitignore 文件中,每一行代表一个要忽略的模式。规则非常简单:

  • 要忽略一个文件,直接写文件名,例如 secret.key

  • 要忽略一个目录,在路径后面加上一个斜杠 /,例如 logs/

  • 可以使用通配符:

    • * 匹配任意数量的字符(除了路径分隔符 /)。

    • ? 匹配单个字符。

    • ** 匹配任意层级的目录。

    • # 开头的行是注释。


针对你的问题的具体示例

假设你的项目结构如下,你希望忽略 node_modules 目录、所有 .log 日志文件、以及一个名为 config.ini 的配置文件。

my-project/
├── src/
│   └── index.js
├── node_modules/    # 巨大的依赖目录,需要忽略
│   └── ...
├── logs/           # 日志目录,需要忽略
│   ├── error.log
│   └── access.log
├── config.ini      # 本地配置文件,需要忽略
├── README.md
└── ...

你的 .gitignore 文件内容应该这样写:

# 忽略所有名为 node_modules 的目录(包括根目录和子目录下的)
node_modules/# 忽略整个 logs 目录及其下的所有内容
logs/# 忽略根目录下的 config.ini 文件
config.ini# 忽略项目中任何位置的 .log 文件
*.log# 忽略所有 .tmp 临时文件
*.tmp# 忽略特定目录下的特定文件类型,比如 dist目录下的.js.map文件
dist/*.js.map

3. 特殊情况:已经跟踪的文件

重要提示:.gitignore 只对未被跟踪的文件生效。

如果你的文件或目录已经被 git add 添加过并且已经提交到了版本库中(即已被跟踪),那么仅仅将其添加到 .gitignore 是不会生效的。Git 会继续跟踪它的变化。

解决方法:

你需要先将这些文件从 Git 的索引(暂存区)中移除,但保留在工作目录中。

# 停止跟踪文件,但将其保留在你的本地磁盘上
git rm --cached <file>
# 例如: git rm --cached config.ini# 停止跟踪整个目录,但将其保留在你的本地磁盘上
git rm -r --cached <directory>
# 例如: git rm -r --cached node_modules/# 然后,将这次的移除操作提交到版本库
git add .gitignore # 如果你也修改了.gitignore文件,别忘了添加它
git commit -m "stop tracking node_modules and config.ini, added them to .gitignore"

之后,这些文件就不会再出现在 git status 中,也不会被上传了。


4. 验证是否生效

完成上述步骤后,你可以使用 git status 命令来检查那些被忽略的文件是否不再显示为“未跟踪文件”。

git status

你应该看不到 node_moduleslogs/config.ini 等文件出现在未跟踪文件列表里了。

总结

  1. 在项目根目录创建 .gitignore 文件

  2. 在文件中编写规则,每行一个要忽略的文件或目录模式。

  3. 如果文件已被跟踪,先使用 git rm --cached <file> 将其从索引中移除,再提交。

  4. 提交 .gitignore 文件本身到 Git 仓库,这样协作的其他人也会共享同一套忽略规则。

这是一个非常基础和重要的 Git 使用技巧,可以有效保持仓库的清洁。

好的,这是一个非常常见的问题。你写的 /src/utils/request.ts 不生效,几乎可以肯定是以下两个原因之一,尤其是第二个原因

原因一:规则写错了(可能性较小)

首先,检查你的 .gitignore 文件中的规则是否书写正确。

  • 错误的写法:你可能写成了 src/utils/request.ts(没有开头的斜杠)。

    • 这意味着 Git 会忽略任何目录下的 src/utils/request.ts 路径。这其实是正确的,但通常我们更倾向于使用更精确的写法。

  • 推荐的写法/src/utils/request.ts(有开头的斜杠)。

    • 开头的斜杠表示该路径是相对于 .gitignore 文件所在目录(即项目根目录) 的。这条规则明确表示“忽略根目录下的 src/utils/request.ts 文件”,非常精确。

请确认你的 .gitignore 文件里是这么写的:

gitignore

# 精确忽略根目录下 src/utils/request.ts 这个特定文件
/src/utils/request.ts

或者,如果规则没错,那么几乎 100% 是下面的原因。


原因二:文件已经被 Git 跟踪了(可能性极大!)

这是最常见的原因。.gitignore 文件的规则只对“未被跟踪(untracked)”的文件生效。

如果你的 request.ts 文件之前已经被 git add 添加过,并且提交(commit)到了版本库历史中,那么它现在是一个“已跟踪(tracked)”的文件。对于已跟踪的文件,.gitignore 规则是无效的。

验证方法:
运行 git status 命令。如果你看到 request.ts 文件出现在 “Changes not staged for commit” 部分,而不是 “Untracked files” 部分,那就说明它已经被跟踪了。

$ git status
On branch main
Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified:   src/utils/request.ts  <-- 它被跟踪了,所以忽略规则无效Untracked files:(use "git add <file>..." to include in what will be committed).gitignore  <-- 这个才是未被跟踪的文件
解决方案:让 Git 停止跟踪该文件

你需要告诉 Git:“从现在开始,停止跟踪这个文件的变化,但把它保留在我的本地硬盘上。” 这需要使用 git rm --cached 命令。

步骤如下:

  1. 确保你的 .gitignore 规则是正确的(如上文所述)。

  2. 在终端或命令行中,运行以下命令:

    # 最关键的一步:从Git索引(暂存区)中移除文件,但保留工作区的文件
    git rm --cached src/utils/request.ts# 如果你的路径是 /src/utils/request.ts,命令也一样,Git会自动处理
    # git rm --cached /src/utils/request.ts

    你会看到类似 rm 'src/utils/request.ts' 的输出。

  3. 提交(commit)这个变更。这个提交的含义是“从版本库中删除 request.ts 文件”,但因为你有 --cached 参数,本地文件不会被删除。

    git add .gitignore # 如果你刚刚修改了.gitignore,也要添加它
    git commit -m "stop tracking src/utils/request.ts and ignore it"

  4. 再次检查状态

    git status

    现在,src/utils/request.ts 文件应该只会出现在 “Untracked files” 列表里,并且因为你的 .gitignore 规则,Git 不会再提示你添加它。它已经成功被忽略了!

重要提示:

  • 执行 git rm --cached 后,这个文件会从之后的所有提交中消失。

  • 对于其他协作者,他们下次拉取(git pull)代码后,他们本地的这个文件不会被删除。但如果他们修改了它,Git 也不会再提示他们有变更,因为这个文件对他们来说也变成了“未跟踪”状态(前提是他们的 .gitignore 规则和你一样)。

总结

  1. 检查规则:确保 .gitignore 中写的是 /src/utils/request.ts

  2. 检查文件状态:用 git status 看文件是否已被跟踪。

  3. 如果已被跟踪:使用 git rm --cached src/utils/request.ts 命令将其从 Git 索引中移除,然后提交这次更改。

完成这三步后,你的 request.ts 文件就一定不会被上传了。

http://www.xdnf.cn/news/18205.html

相关文章:

  • Linux服务器性能优化总结
  • 【Tech Arch】Apache HBase分布式 NoSQL 数据库
  • redis---常用数据类型及内部编码
  • 如何低比特量化算法的工程实战与落地优化
  • 【考研408数据结构-08】 图论基础:存储结构与遍历算法
  • 让Chrome信任自签名证书
  • AI时代下阿里云基础设施的稳定性架构揭秘
  • C#海康SDK—热成像测温篇
  • gitlab、jenkins等应用集成ldap
  • package.json详细字段解释
  • 大数据技术栈 —— Redis与Kafka
  • JavaScript 性能优化实战:从分析到落地的全指南
  • 网络间的通用语言TCP/IP-网络中的通用规则4
  • Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
  • PyTorch自动求导
  • OpenHarmony之打造全场景智联基座的“分布式星链 ”WLAN子系统
  • Java试题-选择题(11)
  • Consul- acl机制!
  • 【Pycharm虚拟环境中安装Homebrew,会到系统中去吗】
  • 【牛客刷题】岛屿数量问题:BFS与DFS解法深度解析
  • Java NIO (New I/O) 深度解析
  • windows电脑对于dell(戴尔)台式的安装,与创建索引盘,系统迁移到新硬盘
  • Nacos-8--分析一下nacos中的AP和CP模式
  • 从现场到云端的“通用语”:Kepware 在工业互联中的角色、使用方法与本土厂商(以胡工科技为例)的差异与优势
  • vLLM加载lora
  • 【MATLAB例程】水下机器人AUV的长基线定位,适用于三维环境,EKF融合长基线和IMU数据,锚点数量可自适应,附下载链接
  • (一)八股(数据库/MQ/缓存)
  • 在Ubuntu上安装并使用Vue2的基本教程
  • week2-[一维数组]最大元素
  • 监督分类——最小距离分类、最大似然分类、支持向量机