php项目git管理核心是忽略vendor/、.env、storage/logs/等运行时文件,提交composer.lock和.env.example,并通过部署脚本确保环境一致。

Git 本身不区分 PHP、Python 或其他语言,管理 PHP 项目和管理任何文本项目一样——关键不是“怎么用 Git 管理 PHP”,而是“怎么用 Git 正确管理一个包含运行时依赖、环境配置和部署逻辑的 PHP 项目”。直接上手就 git init 往里塞 vendor/ 或 .env,后面踩坑是必然的。
PHP 项目必须忽略哪些文件?
PHP 项目里最容易误提交的是三类东西:依赖包、环境配置、生成文件。不加控制地提交会导致仓库膨胀、敏感信息泄露、本地开发与线上行为不一致。
-
vendor/必须进.gitignore—— Composer 依赖应由composer install拉取,而非版本化 -
.env必须忽略 —— 本地数据库密码、API 密钥等绝不能进仓库;可保留.env.example作模板 -
storage/logs/、storage/framework/(Laravel)或cache/类目录需忽略 —— 这些是运行时生成的,每次部署都该清空重建 -
composer.lock要提交 —— 它锁定依赖版本,保证composer install在不同机器上还原完全一致的环境
怎么让团队协作时不覆盖彼此的配置?
多人共用一套 .env 模板但各自维护本地配置,靠的是「模板 + 忽略 + 初始化脚本」组合。没有这个机制,改个数据库地址就得群里喊“谁刚提交了 .env?快回滚!”
- 在项目根目录放
.env.example,填入占位值如DB_HOST=localhost -
.gitignore中明确写入.env(注意不要写成.env*,否则会误忽略.env.example) - 新人克隆后执行:
cp .env.example .env && composer install,再按需修改.env - 如果用 Laravel,可加一行到
composer.json的scripts里:"post-root-package-install": ["@php -r \"file_exists('.env') || copy('.env.example', '.env');\""]
部署时怎么确保 PHP 环境干净且可复现?
Git 只管源码,不负责运行环境。部署失败常因漏了 composer install、PHP 扩展没装、或 storage/ 目录权限不对。Git 本身不解决这些,但能通过约定把它们显性化。
立即学习“PHP免费学习笔记(深入)”;
- 在
README.md里写清最低 PHP 版本(如PHP >= 8.1)和必需扩展(mbstring、curl、pdo_mysql) - 用
composer.json的config.platform.php锁定目标 PHP 版本,避免本地高版本导致线上composer install失败 - 部署脚本(如
deploy.sh)应包含:git pull && composer install --no-dev --optimize-autoloader && php artisan migrate --force(Laravel 示例) - 别把
public/storage这种符号链接提交进 Git —— 它是运行时创建的,应写进部署步骤,而不是靠git checkout恢复
最常被跳过的其实是 composer.lock 提交和 .env 的隔离。这两个点一旦松动,后续所有自动化、CI/CD、甚至只是换台电脑重装,都会变成一场手动救火。Git 不难,难的是在 PHP 的动态生态里守住边界。











