php本身无内置版本控制,需用git管理项目;应忽略.env、vendor/、cache/等文件;禁用直接push到生产环境;用git tag标记发布版本;通过.env.example共享配置模板。

php 本身没有内置版本控制能力——它只是运行时语言,版本管理必须靠外部工具(主要是 git)配合项目结构和部署流程来实现。教别人“PHP 版本控制”,本质是教他们用 git 管理 PHP 项目,并规避常见 PHP 场景下的协作陷阱。
用 git 初始化 PHP 项目时该忽略哪些文件
PHP 项目常含敏感配置、依赖缓存和运行时生成内容,不加过滤会导致提交冲突或泄露凭据:
-
.env文件必须进.gitignore(数据库密码、API 密钥等通常放这里) -
vendor/目录一般不提交,改用composer install在目标环境还原 -
cache/、logs/、runtime/这类框架生成的目录要忽略(Laravel、ThinkPHP 等默认如此) - 如果用了
phpunit.xml或phpcs.xml等配置,应明确提交——它们属于项目规范的一部分
为什么不能直接 git push 到生产服务器
把生产机当 git remote 直接推送,看似省事,实则埋雷:
- 推送后代码立即生效,没经过测试或构建步骤(比如未执行
composer install --no-dev) - 若推送含语法错误的
.php文件,Web 服务可能返回 500,且无回滚标记 - 权限问题频发:Web 服务器用户(如
www-data)通常无权写.git目录 - 正确做法是用部署脚本拉取 tag 或 commit hash,再执行
git checkout && composer install,确保原子性
如何用 git tag 标记 PHP 应用可发布版本
PHP 项目上线不是靠分支名,而是靠语义化标签(v1.2.0),这对运维和回滚至关重要:
- 发布前先本地测试通过,再运行:
git tag -a v1.2.0 -m "release: login fix + API rate limit" - 标签要推送到远程:
git push origin v1.2.0(注意不是--tags,避免误推开发临时 tag) - 生产部署脚本应指定 tag 拉取:
git fetch --tags && git checkout v1.2.0 - 避免用分支名(如
master)做上线依据——它始终在变,无法追溯确切代码快照
多人协作时 PHP 配置文件怎么安全共存
每个开发者本地有不同数据库地址、调试开关,但又不能各自改 .env 还提交冲突:
立即学习“PHP免费学习笔记(深入)”;
- 提交一个
.env.example(含占位值如DB_HOST=127.0.0.1),并写明字段用途 - 在
.gitignore中明确写入.env,禁止任何人提交真实配置 - 启动脚本(如
start-dev.php)可检查.env是否缺失,并提示复制.env.example - CI/CD 环境用 secret 注入变量,而非传文件——
php脚本统一读getenv()或$_ENV
git 不懂 php,php 也不管你有没有 git;真正难的不是命令怎么敲,而是让每个 require、每行 echo 都落在可追踪、可复现、可协作的上下文里。配置漏进仓库、生产机乱 pull、用分支代替版本号——这些坑比语法错误更难 debug。











