本文目录导读:

我来详细介绍一下 PHP 代码版本管理的常用方法和最佳实践。
主要版本管理工具
Git(最常用)
现在几乎所有的 PHP 项目都使用 Git 进行版本管理。
# 基本使用 git init git add . git commit -m "初始提交" git remote add origin https://github.com/your/repo.git git push -u origin main
其他工具
- SVN:旧项目中还有使用
- Mercurial:较少见
版本控制最佳实践
📁 项目结构建议
project/
├── src/ # 源代码
├── tests/ # 测试代码
├── config/ # 配置文件(不包含敏感信息)
├── public/ # 入口文件
├── .gitignore # Git忽略文件
├── composer.json # 依赖管理
└── README.md
📄 .gitignore 文件示例
# 环境配置 .env .env.local .env.*.local # 依赖 /vendor/ /node_modules/ # 缓存 /var/cache/* /var/log/* !var/cache/.gitkeep !var/log/.gitkeep # 上传文件 /public/uploads/* /public/storage/* # IDE 配置 .idea/ .vscode/ *.swp *.swo # 系统文件 .DS_Store Thumbs.db
版本号管理策略
语义化版本控制(SemVer)
主版本号.次版本号.修订号
2.1.3
- 主版本号:不兼容的API修改
- 次版本号:向下兼容的功能新增
- 修订号:向下兼容的问题修复
采用 Git Tag 标记版本
# 创建标签 git tag -a v1.0.0 -m "第一个稳定版本" git tag -a v2.1.3 -m "修复了登录bug" # 推送标签 git push origin v1.0.0 git push --tags
分支管理策略
Git Flow(经典方案)
master ──────┬───── tag v1.0 ────── tag v1.1
│ │
develop ──────┼───── develop ──────┼───── develop
│ │
feature/a ───┤ │
│ │
release ───┘ ┌──────────────┘
│
hotfix ─────────────┘
GitHub Flow(简化方案)
main ────── v1.0 ────── v1.1 ────── v1.2
│ │ │
feature/a ───┘ │ │
feature/b ──────────────┘ │
feature/c ─────────────────────────┘
实际应用示例
使用 Composer 管理依赖版本
{
"require": {
"php": "^7.4 || ^8.0",
"laravel/framework": "^8.0",
"symfony/console": "^5.0",
"monolog/monolog": "^2.0"
}
}
部署时的版本检查
// Version.php
class Version
{
const MAJOR = 2;
const MINOR = 1;
const PATCH = 3;
public static function get()
{
return sprintf('%d.%d.%d', self::MAJOR, self::MINOR, self::PATCH);
}
public static function getFull()
{
return sprintf(
'%s (Build: %s)',
self::get(),
self::getBuildNumber()
);
}
private static function getBuildNumber()
{
// 从 Git commit hash 获取
exec('git log --format="%h" -n 1', $output);
return $output[0] ?? 'unknown';
}
}
CI/CD 自动版本管理
# .github/workflows/release.yml
name: Release
on:
push:
branches: [main]
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: 自动版本递增
run: |
# 根据commit信息自动递增版本
git tag -a v$(date +%Y.%m.%d) -m "自动发布"
git push origin --tags
版本回退管理
# 查看版本历史
git log --oneline
# 回退到特定版本
git reset --hard abc1234
# 撤销回退
git reset --hard HEAD@{1}
# 创建回退分支
git checkout -b revert-feature abc1234
# 恢复被删除的文件
git checkout abc1234 -- deleted_file.php
常见问题解决
敏感信息泄露
# 从历史中移除敏感文件 git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch .env" \ --prune-empty --tag-name-filter cat -- --all
大文件管理
# 使用 Git LFS git lfs track "*.zip" git lfs track "*.pdf" git lfs track "*.jpg"
推荐工具
- SourceTree:可视化 Git 客户端
- GitKraken:跨平台 Git GUI
- PHPStorm/VSCode:内置 Git 集成
- Github Desktop:简单易用
总结建议
- 小步快跑:频繁提交,每次只完成一个功能
- 写清楚的 commit message:说明改动原因
- 使用 .gitignore:避免上传敏感和临时文件
- 定期备份:git push --mirror 备份完整仓库
- 代码审查:通过 Pull Request 管理代码合并
这样管理 PHP 代码版本,可以确保团队协作有序,代码变更可追溯,出现问题也能快速回滚。