六维教程

Git 忽略文件

在开发过程中,编译生成的文件、日志文件、IDE 配置文件、依赖包目录等都不需要提交到仓库中。

.gitignore 是一个纯文本文件,用来告诉 Git 哪些文件或目录不应该被纳入版本控制。

.gitignore 文件本身需要提交到仓库中,这样其他协作者也能共享相同的忽略规则。

创建文件

在 Git 仓库的根目录下创建 .gitignore 文件:

touch .gitignore

然后用文本编辑器打开并添加忽略规则即可。

语法规则

.gitignore 文件中每一行代表一个忽略规则。以下是常用语法:

语法 说明 示例
# 注释 # 忽略日志文件
文件名 忽略指定文件 secret.txt
目录名/ 忽略整个目录 node_modules/
*.扩展名 忽略所有特定扩展名的文件 *.log
* 通配多个字符 temp-* 忽略所有 temp- 开头的文件
? 通配单个字符 ?.txt 匹配 a.txt、b.txt
[] 匹配括号内的单个字符 [0-9].txt 匹配 0.txt、1.txt
! 不忽略(例外),优先级更高 !build/package.json
/ 开头 仅匹配根目录下的路径 /test/ 只忽略根目录下的 test
** 匹配任意层级目录 **/temp 忽略所有层级下的 temp

常用示例

# 注释:以下为常见的忽略规则

# 忽略特定文件
secret.env
config.local.js

# 忽略整个目录
node_modules/
dist/
build/
logs/
coverage/

# 忽略所有日志文件
*.log
npm-debug.log*
yarn-error.log*

# 忽略系统文件
.DS_Store
Thumbs.db

# 忽略 IDE 配置
.idea/
.vscode/
*.swp
*.swo

# 忽略 Python 相关
__pycache__/
*.py[cod]
*.so
venv/
.venv/

# 忽略 Java 相关
*.class
*.jar
target/

# 例外:不忽略某个特定文件
!build/package.json

进阶用法

全局.gitignore文件

如果有些文件(如 .DS_Store)在所有项目中都想忽略,可以配置全局忽略文件:

git config --global core.excludesfile ~/.gitignore_global

然后在 ~/.gitignore_global 中添加全局忽略规则。

本地排除(不提交到仓库)

如果有些忽略规则只适用于你自己,不想影响团队其他成员,可以使用本地排除文件:

# 编辑仓库中的本地排除文件
.git/info/exclude

在这个文件中添加的规则只对当前本地仓库生效,不会被提交。

多个.gitignore文件

可以在项目的不同子目录中放置多个 .gitignore 文件,子目录中的规则优先级更高。

常见问题

为什么 .gitignore 不生效?

.gitignore 只对未被 Git 跟踪的文件生效。如果某个文件已经被提交过(已跟踪),即使添加到 .gitignore 中,Git 仍会继续跟踪它。

如何忽略已经被跟踪的文件?

先用 git rm --cached 命令将其从 Git 的跟踪中移除:

# 移除单个文件的跟踪(保留本地文件)
git rm --cached temp.txt

# 移除所有已跟踪文件的跟踪(谨慎使用)
git rm -r --cached .

然后将该文件添加到 .gitignore 中,最后提交更改。

如何检查某个文件为什么被忽略?

# 查看具体原因
git check-ignore -v 文件路径

# 查看所有被忽略的文件
git status --ignored

如何强制添加被忽略的文件?

git add -f 文件名
下一篇
NPM 教程