ThinkPHP6.x团队协作需统一Git工作流:一、初始化仓库并规范.gitignore;二、大型项目用Git Flow(main/develop/feature/release/hotfix分支);三、中小型项目用GitHub Flow(单main+PR合并);四、冲突用git revert(已推送)或git reset(仅本地);五、通过husky、CI/CD和IDE配置强制执行规范。

如果您正在使用ThinkPHP6.x进行团队协作开发,但面临代码混乱、分支冲突或合并失控等问题,则很可能是Git工作流未统一或执行不规范。以下是针对ThinkPHP6.x项目在团队协作中规范应用Git工作流的具体操作步骤:
一、初始化仓库与.gitignore标准化配置
ThinkPHP6.x项目必须在根目录完成Git初始化,并严格配置.gitignore以排除运行时生成文件、敏感配置及IDE元数据,避免污染仓库历史和泄露凭证。该步骤是后续所有协作流程的前提。
1、进入ThinkPHP6.x项目根目录(含app/、config/、runtime/、public/等目录)。
2、执行git init初始化本地仓库。
立即学习“PHP免费学习笔记(深入)”;
3、创建或编辑.gitignore文件,确保包含以下关键条目:
/runtime/*
/public/uploads/*
/vendor/*
.env
.idea/
.vscode/
*.log
4、确认composer.json与composer.lock已纳入版本控制,但vendor/目录不得提交。
二、采用Git Flow分支模型实施分层协作
Git Flow为ThinkPHP6.x大型项目提供清晰的职责边界与发布节奏控制,通过永久分支与临时分支协同,保障主干稳定性和功能开发并行性。
1、初始化两条永久分支:main(对应生产环境可部署状态)与develop(集成开发主线)。
2、所有新功能开发均从develop拉出命名规范的临时分支:git checkout -b feature/order-export develop。
3、功能开发完成后,向develop发起Merge Request,经至少一名成员Code Review并批准后,执行git merge --no-ff feature/order-export合并。
4、当develop达到可发布状态,从其拉出release/v6.3.0分支,仅允许修复Bug与更新版本号,禁止新增功能。
5、发布验证通过后,将release/v6.3.0同时合并至main与develop,并在main上打tag:git tag -a v6.3.0 -m "Release v6.3.0"。
三、切换至GitHub Flow实现轻量级快速迭代
GitHub Flow适用于ThinkPHP6.x中小型项目或SaaS类持续交付场景,强调主分支始终处于可部署状态,降低分支管理复杂度,提升发布频率与响应速度。
1、仅保留单一永久分支main,所有变更必须通过特性分支引入。
2、开发者基于main创建特性分支:git checkout -b feature/api-rate-limiting main。
3、完成开发后推送分支:git push origin feature/api-rate-limiting。
4、在Git平台创建Pull Request,自动触发CI流水线(如运行PHPUnit测试、PHP_CodeSniffer检查)。
5、满足所有检查项且至少一名审查者批准后,由Maintainer执行Squash and Merge方式合并入main。
6、合并后立即触发CD流程部署至预发环境,验证通过即上线。
四、冲突解决与历史回溯双路径机制
当多人修改同一ThinkPHP6.x控制器或配置文件引发冲突时,需依据场景选择安全、可审计的解决路径,避免破坏线上稳定性。
1、若冲突发生在未推送的本地功能分支中,执行git status定位冲突文件,手动编辑解决后运行git add <file>标记已解决。
2、若需撤销已推送到远程的错误提交,使用git revert <commit-hash>生成反向提交,保留完整历史轨迹。
3、若错误仅存在于本地私有分支且尚未共享,可使用git reset --hard HEAD~1彻底移除最近一次提交。
4、若需恢复某次提交前的单个配置文件(如config/database.php),执行git checkout <commit-hash> -- config/database.php。
严禁在共享分支(如main、develop)上执行git reset --hard操作
五、自动化辅助与强制规范落地
仅靠人工遵守流程易产生疏漏,需借助工具链将Git工作流规范固化为开发环境默认行为,降低认知负荷与误操作风险。
1、在VS Code中启用"git.autoFetch": true,每5分钟自动检查远程更新并在状态栏提示拉取。
2、在PHPStorm中配置Commit Message模板,强制要求以feat:、fix:、chore:等前缀开头。
3、在项目根目录添加.husky/pre-commit钩子,运行phpcbf --standard=PSR12 app/自动格式化代码。
4、在GitLab CI配置.gitlab-ci.yml,每次Push自动执行phpcs --standard=PSR12 app/与phpunit tests/。
所有Merge Request必须通过CI检查且至少一名Reviewer批准才允许合并



















