Eli.dev

开发完成后如何正确提CR

2025年11月13日

git workflow

开发完后应当保证以下几点才算合格:

  1. 保证commit 简洁, 只有一条, 目的是保持 history 简洁
  2. 无冲突
  3. 所有检测均正常通过(至少保证无error 检测报错)

如何保证commit 简洁

比如下图一中的提交, 包含三个commit, 提交到远端后在MR 页面能够看到对应三个提交, 如果不合并这三个commit, 造成的结果是会看到对应修改代码历史中三次提交, 比较混乱 [图片]

步骤一: rebase master

// 首先 checkout master, 拉远端 master 最新代码
git checkout master
git pull

// 然后checkout 本地待提交分支
git checkout ${branch}    // 或者 git checkout -

// rebase master
git rebase master

步骤二: 解决冲突( 若有 )

// 解决冲突后
git add .
// 继续rebase
git rebase --continue

rebase master 后的成功提示: [图片]

步骤三: 合并commit

// 首先, 查看上一个人合并到master commit id, 图三种本次合并的id 9720c9eb
git log --oneline

// 合并记录, 交互窗口如
git rebase -i 9720c9eb

// 此处按 i 进入vim交互模型, 在不需要保留的commit 中用s 标明, 如图五
p/pick 代表保留, s/squash 代表不保留, 也可以修改对应的 commit

// 保存
:wq

// 修改对应 commit msg
用#可以隐藏对应msg, 如图六

// 保存
:wq

图三 [图片] 图四 [图片] 图五 [图片]

Push 到远端

git push -f origin ${branch}

[图片]

合并后的效果:

只有7a429f03 一条 commit [图片] MR 页面: [图片]