在发起 Merge Request (MR) 前,需完成以下关键操作以确保代码质量和顺利合并:
一、本地代码准备
-
同步最新代码
git checkout 目标分支 # 如develop git pull origin 目标分支 # 获取最新代码 git checkout 自己的分支 # 切换回功能分支 git merge 目标分支 # 合并最新代码到本地分支
- 目的:提前发现并解决冲突,避免MR时阻塞。
-
解决合并冲突
- 手动编辑冲突文件,保留正确代码。
- 提交合并结果:
git add . git commit -m "merge: resolve conflicts"
二、代码质量检查
-
格式化与静态检查
npm run format # Prettier格式化代码 npm run lint # ESLint/TSLint检查语法错误
- 注意:禁止忽略错误提交,确保代码符合团队规范。
-
单元测试
npm run test # 执行测试用例
- 确保所有测试通过,无新增失败案例。
三、提交信息规范化
-
使用Conventional Commits规范
git commit -m "类型(范围): 描述" # 示例: # feat(user): 添加用户头像上传功能 # fix(api): 修复接口404错误
- 类型:
feat
/fix
/docs
/style
/refactor
/test
/chore
。
- 类型:
-
工具辅助
- 使用
commitizen
交互式生成规范提交信息:npx cz # 代替git commit
- 使用
四、远程分支同步
-
推送本地分支
git push origin 自己的分支 # 推送到远程仓库
-
确认分支状态
- 在Git平台(如GitLab/GitHub)查看分支对比,确保变更符合预期。
五、MR内容准备
-
填写清晰的MR描述
- 标题:简洁概括变更内容(如
feat: 实现用户认证功能
)。 - 描述:
- 变更背景和目的。
- 关键实现细节(如涉及的接口、组件)。
- 测试覆盖情况(如“已添加单元测试”)。
- 相关Issue链接(如
Fixes #123
)。
- 标题:简洁概括变更内容(如
-
设置必要参数
- 目标分支:如
develop
或main
。 - Assignee:指定审核人。
- Labels:添加标签(如
feature
、bugfix
)。
- 目标分支:如
六、附加检查(可选)
-
CI/CD流水线
- 确保MR触发的自动化测试(如构建、集成测试)通过。
-
文档更新
- 同步更新相关文档(如API文档、README)。
关键注意事项
- 最小化变更:单个MR只解决一个明确问题,避免包含无关修改。
- 自描述代码:通过命名、注释让代码易于理解,减少审核成本。
- 提前沟通:复杂变更可先与团队讨论,避免返工。
完成以上步骤后,即可安全发起MR并等待审核。
当合并分支时遇到冲突,可按以下步骤解决:
一、定位冲突
-
执行合并命令后查看提示
git merge 目标分支 # 如git merge develop
- 若出现类似以下提示,则表示存在冲突:
CONFLICT (content): Merge conflict in 文件路径 Automatic merge failed; fix conflicts and then commit the result.
- 若出现类似以下提示,则表示存在冲突:
-
查看冲突文件列表
git status # 显示带有"both modified"的文件
二、解决冲突
-
手动编辑冲突文件
打开冲突文件,会看到类似以下标记:<<<<<<< HEAD // 你当前分支的代码 ======= // 目标分支的代码 >>>>>>> 目标分支名或commit哈希
- 选择保留内容:删除冲突标记(
<<<<<<<
、=======
、>>>>>>>
),保留正确代码。 - 合并内容:若双方修改均需保留,手动整合代码。
- 选择保留内容:删除冲突标记(
-
示例
冲突文件:<<<<<<< HEAD const greeting = "Hello"; ======= const greeting = "Hi"; >>>>>>> develop
解决后:
const greeting = "Hi there"; // 手动整合双方修改
三、验证修改
-
编译和测试
npm run build # 确保项目能正常编译 npm run test # 执行测试用例,验证功能
-
检查变更
git diff # 查看修改内容,确认无遗漏
四、提交合并结果
-
标记冲突已解决
git add 冲突文件路径 # 逐个添加已解决的文件 # 或一次性添加所有已解决文件 git add .
-
提交合并 commit
git commit -m "merge: resolve conflicts with develop"
- 注意:不要修改自动生成的合并提交信息,除非必要。
五、高级技巧(可选)
-
使用合并工具
配置图形化合并工具(如VSCode、Beyond Compare):git mergetool # 启动图形化合并工具
-
撤销合并尝试
若冲突过于复杂,可暂时取消合并:git merge --abort # 仅在Git 2.23+可用 # 旧版本Git使用 git reset --hard ORIG_HEAD
六、预防冲突
-
频繁同步代码
git pull --rebase origin 目标分支 # 合并前先同步最新代码
-
拆分复杂变更
将大型功能拆分为多个小MR,减少冲突概率。 -
明确分工
避免多人同时修改同一文件的相同部分。
关键注意事项
- 理解变更背景:与冲突代码的作者沟通,确保合并符合业务需求。
- 提交原子性:每个提交应只解决一个问题,避免将冲突解决与新功能混在一起。
- 更新文档:若修改涉及API或流程,同步更新相关文档。
通过以上步骤,可高效解决合并冲突并保持代码历史的清晰性。