git是php项目唯一实际可用的版本控制工具,php本身不提供版本控制能力;应立即初始化仓库、配置.gitignore、提交composer.lock,并按功能而非php版本分分支,接口升级需路由隔离而非混写逻辑。

git 是 PHP 项目唯一实际可用的版本控制工具,PHP 本身不提供任何版本控制能力。学它不是为了“用 PHP 控制版本”,而是让 PHP 代码能被可靠地追踪、协作和部署。
刚写完 index.php 就该初始化 git 仓库
很多人等项目做大了才想起来加版本控制,结果一堆临时文件、缓存、敏感配置已经混进去了。 - 进入项目根目录(比如/var/www/html/my-app),立刻执行:git init
- 紧接着就建 .gitignore,至少包含:vendor/、.env、storage/、runtime/、cache/
- 别急着 git add . —— 先 git status 看一眼,确认没漏掉不该提交的东西
- composer.lock 必须提交,它是保证所有人装出一致依赖的关键
别把 PHP 版本当分支依据
看到别人建php81、php82 分支?那是错的。
- PHP 版本是运行环境属性,不是代码逻辑差异;main 分支可以同时支持 PHP 8.1 和 8.2,只要 composer.json 里声明了 "php": "^8.1" 并通过 CI 验证
- 真正该分的是功能:用 feature/login 开发登录,hotfix/db-timeout 修线上问题
- 如果要验证跨版本兼容性,靠 GitHub Actions 跑 php:8.1 和 php:8.2 容器里的测试,不是靠切分支
API 接口版本控制别动 core 文件
接口升级时,最容易踩的坑是直接在UserController.php 里加 if ($version === 'v2') { ... }。
- 正确做法是按版本隔离控制器:Laravel 用 Route::prefix('v1') + namespace('V1'),ThinkPHP 用 app/controller/v1/User.php
- 公共逻辑下沉到 service 层,控制器只做路由分发和响应包装
- Accept: application/vnd.myapp.v1+json 这种请求头方式虽优雅,但调试时 curl 得手动加 -H,多数团队初期选 URL 路径更省事
push 到远程前必须检查三件事
-php -v 输出的 CLI 版本是否匹配 composer.json 的 require.php 字段
- 所有 .php 文件是否为 UTF-8 无 BOM 编码(Windows 记事本默认会加 BOM,Linux 下直接报 Parse error)
- .env 是否真在 .gitignore 里,且没被 git add -f 强行加进去
最常被忽略的其实是编码和 CLI 版本的同步——它们不会导致 git push 失败,却会让代码在服务器上根本跑不起来。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











