Git的Merge Request前必做的6步关键检查

在发起 Merge Request (MR) 前,需完成以下关键操作以确保代码质量和顺利合并:

一、本地代码准备

  1. 同步最新代码

    git checkout 目标分支  # 如develop
    git pull origin 目标分支  # 获取最新代码
    git checkout 自己的分支  # 切换回功能分支
    git merge 目标分支  # 合并最新代码到本地分支
    
    • 目的:提前发现并解决冲突,避免MR时阻塞。
  2. 解决合并冲突

    • 手动编辑冲突文件,保留正确代码。
    • 提交合并结果:
      git add .
      git commit -m "merge: resolve conflicts"
      

二、代码质量检查

  1. 格式化与静态检查

    npm run format  # Prettier格式化代码
    npm run lint    # ESLint/TSLint检查语法错误
    
    • 注意:禁止忽略错误提交,确保代码符合团队规范。
  2. 单元测试

    npm run test  # 执行测试用例
    
    • 确保所有测试通过,无新增失败案例。

三、提交信息规范化

  1. 使用Conventional Commits规范

    git commit -m "类型(范围): 描述"
    # 示例:
    # feat(user): 添加用户头像上传功能
    # fix(api): 修复接口404错误
    
    • 类型feat/fix/docs/style/refactor/test/chore
  2. 工具辅助

    • 使用 commitizen 交互式生成规范提交信息:
      npx cz  # 代替git commit
      

四、远程分支同步

  1. 推送本地分支

    git push origin 自己的分支  # 推送到远程仓库
    
  2. 确认分支状态

    • 在Git平台(如GitLab/GitHub)查看分支对比,确保变更符合预期。

五、MR内容准备

  1. 填写清晰的MR描述

    • 标题:简洁概括变更内容(如 feat: 实现用户认证功能)。
    • 描述
      • 变更背景和目的。
      • 关键实现细节(如涉及的接口、组件)。
      • 测试覆盖情况(如“已添加单元测试”)。
      • 相关Issue链接(如 Fixes #123)。
  2. 设置必要参数

    • 目标分支:如 developmain
    • Assignee:指定审核人。
    • Labels:添加标签(如 featurebugfix)。

六、附加检查(可选)

  1. CI/CD流水线

    • 确保MR触发的自动化测试(如构建、集成测试)通过。
  2. 文档更新

    • 同步更新相关文档(如API文档、README)。

关键注意事项

  • 最小化变更:单个MR只解决一个明确问题,避免包含无关修改。
  • 自描述代码:通过命名、注释让代码易于理解,减少审核成本。
  • 提前沟通:复杂变更可先与团队讨论,避免返工。

完成以上步骤后,即可安全发起MR并等待审核。


当合并分支时遇到冲突,可按以下步骤解决:

一、定位冲突

  1. 执行合并命令后查看提示

    git merge 目标分支  # 如git merge develop
    
    • 若出现类似以下提示,则表示存在冲突:
      CONFLICT (content): Merge conflict in 文件路径
      Automatic merge failed; fix conflicts and then commit the result.
      
  2. 查看冲突文件列表

    git status  # 显示带有"both modified"的文件
    

二、解决冲突

  1. 手动编辑冲突文件
    打开冲突文件,会看到类似以下标记:

    <<<<<<< HEAD
    // 你当前分支的代码
    =======
    // 目标分支的代码
    >>>>>>> 目标分支名或commit哈希
    
    • 选择保留内容:删除冲突标记(<<<<<<<=======>>>>>>>),保留正确代码。
    • 合并内容:若双方修改均需保留,手动整合代码。
  2. 示例
    冲突文件:

    <<<<<<< HEAD
    const greeting = "Hello";
    =======
    const greeting = "Hi";
    >>>>>>> develop
    

    解决后:

    const greeting = "Hi there";  // 手动整合双方修改
    

三、验证修改

  1. 编译和测试

    npm run build  # 确保项目能正常编译
    npm run test   # 执行测试用例,验证功能
    
  2. 检查变更

    git diff  # 查看修改内容,确认无遗漏
    

四、提交合并结果

  1. 标记冲突已解决

    git add 冲突文件路径  # 逐个添加已解决的文件
    # 或一次性添加所有已解决文件
    git add .
    
  2. 提交合并 commit

    git commit -m "merge: resolve conflicts with develop"
    
    • 注意:不要修改自动生成的合并提交信息,除非必要。

五、高级技巧(可选)

  1. 使用合并工具
    配置图形化合并工具(如VSCode、Beyond Compare):

    git mergetool  # 启动图形化合并工具
    
  2. 撤销合并尝试
    若冲突过于复杂,可暂时取消合并:

    git merge --abort  # 仅在Git 2.23+可用
    # 旧版本Git使用
    git reset --hard ORIG_HEAD
    

六、预防冲突

  1. 频繁同步代码

    git pull --rebase origin 目标分支  # 合并前先同步最新代码
    
  2. 拆分复杂变更
    将大型功能拆分为多个小MR,减少冲突概率。

  3. 明确分工
    避免多人同时修改同一文件的相同部分。

关键注意事项

  • 理解变更背景:与冲突代码的作者沟通,确保合并符合业务需求。
  • 提交原子性:每个提交应只解决一个问题,避免将冲突解决与新功能混在一起。
  • 更新文档:若修改涉及API或流程,同步更新相关文档。

通过以上步骤,可高效解决合并冲突并保持代码历史的清晰性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISer_Jinger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值