在团队协作开发中,规范的 Git 操作流程是保障代码一致性、减少冲突、提高协作效率的核心。本文以 AICR 应用开发为例,详细拆解从本地开发、代码提交到分支合并的完整流程,适配「个人开发分支 → 目标合并分支」的协作模式,适合需要规范化提交的团队或个人参考。
一、背景与核心协作逻辑
AICR 项目采用「多分支并行开发 + PR 合并」的协作模式,核心规则如下:
- 项目主开发分支为
feature/202511/V12-1101(目标合并分支); - 每位开发者基于目标分支创建个人开发分支(命名规范:
feature/V12-1101-姓名缩写,如feature/V12-1101-LSP); - 开发完成后通过「Pull Request(PR)」发起合并请求,经代码审核后合并至目标分支;
- 全程遵循 Git 提交规范,确保分支历史清晰、冲突提前规避。
二、完整操作流程(附命令与场景说明)
1. 初始化:创建个人开发分支
首先需基于目标分支创建本地开发分支,确保开发起点与远程最新代码一致。
# 1. 拉取远程仓库所有分支信息(更新本地缓存)
git fetch origin
# 2. 基于远程目标分支创建并切换到个人开发分支
git checkout -b feature/V25-1107-LSP origin/feature/202511/V12-1101
- 分支命名建议:
feature/迭代版本-日期-开发者标识,便于区分不同功能与负责人; - 若本地已存在目标分支,先执行
git pull origin feature/202511/V12-1101同步最新代码。
2. 开发阶段:本地代码提交
开发过程中需定期提交代码,确保工作成果可追溯,提交信息需清晰规范。
# 1. 查看本地修改文件(确认提交范围)
git status
# 2. 将修改文件加入暂存区
git add . # 提交所有修改(谨慎使用,可替换为具体文件名)
# 3. 提交到本地仓库(提交信息需明确功能/修改内容)
git commit -m "V25-1107-LSP:开发 AICR 应用首页组件+数据请求逻辑"
- 提交信息规范:
分支标识:功能模块 + 具体操作,避免模糊表述(如「修复 bug」「更新代码」); - 若需修改最近一次提交(未推送远程),可使用
git commit --amend补充信息。
3. 同步远程:拉取目标分支最新代码(避免冲突)
开发过程中,目标分支可能有其他开发者提交代码,需定期同步以提前解决冲突。
# 1. 拉取远程目标分支的最新更新
git fetch origin feature/202511/V12-1101
# 2. 用 rebase 方式合并远程代码(保持分支历史线性整洁)
git rebase origin/feature/202511/V12-1101
冲突处理:若出现 CONFLICT 提示,打开冲突文件,按 <<<<<<< ======= >>>>>>>, 标记修改冲突内容,解决后执行:
git add . # 标记冲突已解决
git rebase --continue # 继续完成变基
- 若需放弃变基,执行
git rebase --abort回退到变基前状态。
4. 推送远程:将个人分支推送到远程仓库
本地开发与冲突处理完成后,将个人分支推送到远程仓库,为 PR 做准备
# 首次推送:建立本地分支与远程分支的关联(后续可直接用 git push)
git push -u origin feature/V25-1107-LSP
# 若之前执行过 rebase 导致分支历史不一致,需强制推送(安全模式)
git push --force-with-lease origin feature/V25-1107-LSP
- 关键说明:
--force-with-lease比--force更安全,会检查远程分支是否有他人提交,避免误覆盖他人代码; - 推送成功后,可通过仓库平台(GitLab/GitHub)查看远程分支是否存在。
5. 发起 PR:申请合并到目标分支
推送完成后,通过仓库平台发起 PR,正式申请将个人分支合并到目标分支。
以 GitLab 为例(GitHub 流程类似):
-
打开远程仓库地址(如
http://git.sf-express.com/scm/fop-dmp/fop-dmp-dsp-ai-analysis-platform.git); -
点击「合并请求」→「新建合并请求」;
-
配置分支:
- 源分支:选择个人开发分支
feature/V25-1107-LSP; - 目标分支:选择
feature/202511/V12-1101;
- 源分支:选择个人开发分支
-
填写 PR 信息:
- 标题:
V25-1107-HWH:AICR 应用首页组件+数据请求逻辑开发(与提交信息一致); - 描述:补充开发细节(如实现功能、测试场景、依赖说明),示例
1. 开发内容:AICR 应用首页核心组件(卡片、趋势图)、接口请求逻辑(数据拉取、异常处理); 2. 测试情况:本地验证接口联调正常、分支已同步目标分支最新代码; 3. 依赖说明:无额外依赖,兼容现有项目架构。-
选择审核人员,点击「提交合并请求」。
PR 后续:处理审核意见与合并
-
审核反馈:若审核人员提出修改建议,在本地分支修改后,执行
git add .→git commit -m "PR修改:xxx"→git push,修改会自动同步到已发起的 PR 中; -
合并完成:审核通过后,由管理员点击「合并」按钮,将个人分支代码合并到目标分支;
-
分支清理(可选):合并完成后,若无需保留个人分支,可在平台删除远程分支,本地执行
git branch -d feature/V25-1107-LSP删除本地分支。
- 标题:
三、关键问题与避坑指南
- 推送时提示「non-fast-forward」拒绝 :原因是本地分支历史与远程不一致(如执行过 rebase),用
git push --force-with-lease安全强制推送; - rebase 过程中冲突反复出现 :可能是多次提交与远程代码冲突,耐心逐次解决,每次解决后执行
git add .和git rebase --continue; - PR 合并时提示「存在冲突」 :回到本地分支,重新执行
git fetch→git rebase同步远程目标分支最新代码,解决冲突后推送,PR 会自动更新; - 提交信息不规范:统一遵循「分支标识:功能 + 操作」格式,便于后续代码追溯与问题定位。