Git 删除被忽略的文件

当你将一个 已经被 Git 跟踪的目录 dir/ 添加到 .gitignore 后,Git 的行为会有以下关键变化: 1. 新增文件会被忽略 任何 dir/ 目录下的 新文件 会被 自动忽略,不会被 Git 跟踪。 ✅ 新文件例子: touch dir/new_file.txt git status # 不会显示 new_file.txt 2. 已跟踪的文件仍然被 Git 跟踪 Git 仍然会继续跟踪 dir/ 中之前已经提交(tracked)的文件,即使你现在把 dir/ 加入了 .gitignore。 ⚠️ 这是因为 Git 只忽略未被跟踪(untracked)的文件,不会自动删除仓库历史记录! ✅ 已跟踪文件例子: # 假设 dir/old_file.txt 之前提交过 git add dir/old_file.txt git commit -m "Add old_file.txt" 之后修改 old_file.txt: echo "changed" > dir/old_file.txt git status # 仍然会显示 old_file.txt 已修改! 3. 如何彻底移除跟踪?(如果需要) 如果你希望 完全停止跟踪 dir/ 下的文件(包括已提交的文件),需 手动删除 Git 记录: ...

1 min · 181 words

Gitignore语法

在 Git 项目中,.gitignore 文件用于指定哪些文件或目录应该被 Git 忽略(不纳入版本控制)。下面详细介绍它的 语法规则与用法: 1. 基本规则 (1)忽略单个文件 直接写文件名: secret.txt 👉 Git 会忽略项目根目录下的 secret.txt 文件。 (2)忽略特定目录 以 / 结尾表示目录: node_modules/ logs/ 👉 忽略 node_modules/ 和 logs/ 目录及其所有内容。 (3)匹配任意层级的同名文件/目录 **/temp/ 👉 忽略所有层级下的 temp/ 目录(如 /temp/、/src/temp/)。 2. 通配符规则 (1)* - 匹配任意字符(不包括 /) *.log 👉 忽略所有 .log 文件(如 error.log、debug.log)。 (2)? - 匹配单个字符 file?.txt 👉 忽略 file1.txt、fileA.txt,但不匹配 file10.txt。 (3)[] - 字符集合 [abc].txt 👉 忽略 a.txt、b.txt、c.txt,但不匹配 d.txt。 3. 路径规则 (1)从项目根目录开始匹配 以 / 开头: ...

1 min · 186 words