thinkphp项目提交代码前必须配置合理.gitignore:vendor/、.env、runtime/、bootstrap/cache/、public/build/等需忽略,composer.lock必须提交;路径应加/明确目录,已提交文件需用git rm --cached移除跟踪。

ThinkPHP 项目提交代码前,必须配置合理的 .gitignore 规则,否则容易把临时文件、依赖包、敏感配置甚至编译产物误提交到仓库,造成安全隐患、协作混乱或仓库臃肿。
核心需忽略的目录和文件
这些是 ThinkPHP 项目中普遍不应进 Git 的内容:
-
vendor/:Composer 安装的第三方包,靠
composer install恢复,必须忽略 -
.env:含数据库密码、API密钥等敏感信息,绝对不提交;建议保留
.env.example作为模板提交 - runtime/(TP6/TP8 默认)或 storage/(Laravel 风格命名,部分 TP 自定义结构也用):运行时生成的日志、缓存、会话等,每次启动/请求都会写入,必须忽略
-
bootstrap/cache/(TP8 常见):框架预编译的配置缓存,由
php think optimize:config等命令生成,应忽略 - public/build/ 或 public/dist/:前端资源构建产物(如 Vue/React 打包后文件),属于生成物,不提交源码外的产物
- composer.lock:这个要特别注意——必须提交。它锁定所有依赖的精确版本,保障多人环境一致
.gitignore 写法要点
规则写错会导致忽略失效。常见注意事项:
适用于以下场景:(1)用户提供 GitHub 仓库 URL 或本地仓库路径,并请求将其转换为其他格式;(2)用户请求导出 GitHub 仓库……
- 路径以
/开头表示只匹配项目根目录下的项,例如/runtime不影响app/runtime - 目录忽略推荐写成
runtime/(结尾加/),明确只忽略目录而非同名文件 - 通配符生效需注意层级,例如
**/cache/可匹配任意深度的 cache 目录 - 注释用
#,空行可提升可读性,Git 会自动跳过
已提交文件如何补救
如果之前已把 vendor/ 或 .env 提交过,仅改 .gitignore 不起作用:
- 执行
git rm --cached -r vendor/移除暂存区跟踪(本地文件保留) - 执行
git rm --cached .env(单个文件不用-r) - 再提交一次:
git commit -m "remove vendor and .env from tracking" - 后续这些文件就真正被
.gitignore控制了
配合 Git Hooks 做提交前防护(TP8 推荐)
光靠人工检查易遗漏。ThinkPHP 8.0 项目可借助 Husky + lint-staged 实现自动化:
- 用
npx husky-init && npm install初始化钩子 - 在
package.json中配置lint-staged,只扫描暂存区里的app/**/*.{php,html}和route/**/* - 钩子中自动运行
php-cs-fixer格式检查 +phpstan静态分析,还能拦截dump()、dd()等调试语句 - 避免“先提交再修复”的低效循环,让规范成为提交必经环节
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!










