php项目应通过.gitignore文件忽略无需版本控制的文件,如/vendor/、.env、缓存日志目录等;已提交文件需用git rm --cached移除跟踪;优先使用项目级而非全局.gitignore。

Git 忽略 PHP 项目中不需要版本控制的文件
PHP 项目里,.env、vendor/、composer.lock(视情况)、缓存目录、日志文件这些默认不该进 Git。忽略它们不是靠删掉或手动跳过,而是靠 .gitignore 文件统一声明。
在项目根目录创建或编辑 .gitignore 文件
确保该文件位于 Git 仓库根目录(和 composer.json 同级),内容按需添加。常见 PHP 相关条目如下:
-
/vendor/—— Composer 包目录,必须忽略(除非你故意提交依赖) -
.env—— 环境配置,含敏感信息,绝不能提交 -
/storage/logs/、/storage/framework/cache/、/storage/framework/sessions/—— Laravel 默认存储路径,运行时生成,忽略 -
/public/storage—— 如果是软链接(Laravel 中执行php artisan storage:link生成),也应忽略 -
composer.phar—— 下载的 Composer 可执行文件,本地工具,不进仓库
注意:以 / 开头表示从仓库根开始匹配;不加 /(如 logs/)会匹配所有子目录下的同名目录。
已提交的文件怎么从 Git 中彻底移除但保留本地?
如果 .env 或 vendor/ 已被误提交,仅改 .gitignore 不生效。得用 git rm --cached 清除 Git 跟踪:
立即学习“PHP免费学习笔记(深入)”;
git rm -r --cached vendor/ git rm --cached .env git commit -m "remove vendor/ and .env from version control"
之后这些文件就只保留在本地,不再出现在 git status 中,也不会被下次 push 带走。
全局忽略 vs 项目级忽略,PHP 开发者该选哪个?
项目级 .gitignore 是首选。全局设置(如 git config --global core.excludesfile ~/.gitignore_global)适合忽略编辑器临时文件(*~、.DS_Store),但不建议放 PHP 特有规则——不同项目结构差异大,比如有的用 app/config/,有的用 config/,硬写死容易冲突。
另外,别把 composer.lock 加进 .gitignore(除非你明确不要锁定依赖版本)。它对部署一致性至关重要,Laravel、Symfony 官方都要求提交。
真正容易被忽略的是「已经跟踪过的文件后来才加进 .gitignore」——这种情况下,git rm --cached 这步几乎总是漏掉。











