ThinkPHP在Ubuntu上的版本控制实践(基于Git)
ThinkPHP本身不内置版本控制系统,需通过Git等外部工具实现代码变更追踪、团队协作及版本回溯。以下是在Ubuntu环境下使用Git进行ThinkPHP版本控制的核心流程及注意事项:
在ThinkPHP项目根目录(包含app、public、vendor等核心文件夹的目录)下执行以下命令,初始化本地Git仓库:
git init
这会在项目根目录生成.git隐藏文件夹,用于存储版本控制元数据。
为避免将无需版本控制的目录(如临时文件、依赖目录、环境配置文件)纳入仓库,需在项目根目录创建.gitignore文件,并添加以下内容:
/runtime/ # 临时运行时文件(缓存、日志等)
/vendor/ # Composer依赖目录(通过composer.json管理)
/public/uploads/ # 用户上传的文件(体积大且无需版本控制)
.env # 环境配置文件(包含敏感信息,如数据库密码)
.idea/ # PhpStorm IDE配置目录
.vscode/ # VSCode IDE配置目录
npm-debug.log # Node.js调试日志
yarn-error.log # Yarn调试日志
此配置可防止无关文件占用仓库空间,同时避免泄露敏感信息。
将项目中的必要文件(如composer.json、composer.lock、config/目录、app/目录等)添加到暂存区,并提交初始版本:
git add composer.json composer.lock config/ app/ public/
git commit -m "Initial ThinkPHP project setup"
注意:composer.json和composer.lock需纳入版本控制,用于管理项目依赖;vendor/目录无需提交,后续通过composer install恢复。
若需将项目代码备份至GitHub、GitLab或Gitee等远程仓库,可执行以下命令关联远程仓库(将[远程仓库URL]替换为实际地址):
git remote add origin [远程仓库URL]
首次推送代码至远程仓库的主分支(如main或master):
git push -u origin main
此后可通过git push和git pull同步本地与远程仓库的代码。
采用合理的分支策略可提升团队协作效率,推荐以下两种主流模式:
master(生产环境代码)、develop(开发主干)、feature/*(特性分支)、release/*(预发布分支)、hotfix/*(紧急修复分支)。特性分支从develop创建,合并至develop后删除;release分支用于预发布测试,合并至master和develop后删除;hotfix分支从master创建,修复后合并至master和develop。main(生产环境代码)和feature/*(特性分支)。特性分支从main创建,开发完成后通过Pull Request合并至main,合并后立即部署。当多人协作开发时,可能会遇到代码冲突(如同一文件的同一位置被不同成员修改)。解决步骤如下:
git status查看冲突文件(标记为“both modified”的文件);<<<<<<< HEAD、=======、>>>>>>> branch-name),保留正确代码;git add 冲突文件标记冲突已解决;git commit完成合并(Git会自动生成合并提交信息)。若需撤销已提交的错误代码,可使用以下命令:
git reset --hard 提交ID(提交ID可通过git log查看,此命令会删除指定提交及之后的所有提交);git revert 提交ID(此命令会创建一个新的提交,撤销指定提交的更改,不会修改历史记录,更安全);git checkout 提交ID -- 文件路径(将指定文件恢复至某次提交的状态)。composer.json和composer.lock纳入版本控制。团队成员克隆项目后,执行composer install即可安装所有依赖(vendor/目录无需提交);.env.example文件作为环境配置模板(包含默认配置项,不含敏感信息),团队成员复制该文件为.env并填写实际配置(如数据库连接信息)。.env文件需添加至.gitignore,避免敏感信息泄露。通过以上步骤,可实现ThinkPHP项目在Ubuntu环境下的规范化版本控制,确保代码变更可追溯、团队协作顺畅。