| name | git-rebase-workflow |
| description | Git Rebase 分支同步流程,用于将当前功能分支 rebase 到最新的目标分支(如 master/main),保持提交历史整洁。适用于功能分支落后于目标分支时,需要同步最新代码的场景。 |
Git Rebase 工作流
将当前功能分支 rebase 到最新的目标分支(通常是 master/main),保持线性提交历史。
使用场景
- 功能分支落后于 master,需要同步最新代码
- 提交 MR/PR 前保持提交历史整洁
- 避免使用
git merge 产生的合并提交
前置检查
-
确认当前分支状态:
git branch -v
git status
-
确认工作区干净(无未提交的更改)
Rebase 流程
1. 获取最新代码
git fetch origin <目标分支>
2. 执行 Rebase
git rebase origin/<目标分支>
3. 解决冲突(如有)
如果出现冲突,按以下步骤处理:
-
查看冲突文件:
git status
-
查看冲突详情:
grep -n "<<<<<<< HEAD\|=======\|>>>>>>>" <冲突文件>
-
解决冲突策略:
-
标记冲突已解决:
git add <文件路径>
-
继续 rebase:
git rebase --continue
在非交互环境或自动化执行中,避免 rebase --continue 打开编辑器后挂起。可临时禁用编辑器:
GIT_EDITOR=true git rebase --continue
如果命令已因编辑器挂起,先确认当前进程和 rebase 状态,再结束卡住的编辑器进程;不要中止 rebase 或重复执行会改写状态的命令。
-
如需中止 rebase:
git rebase --abort
4. 推送更新
git push origin <当前分支> --force-with-lease
注意:必须使用 --force-with-lease 安全地强制推送
常见问题
冲突解决原则
- 版本号冲突: 通常保留较新的版本
- API 变更: 根据具体情况分析,询问用户意图
- 配置变更: 评估变更影响,选择合适的版本
安全建议
- rebase 前确保有备份或已推送的分支
- 不要对公共分支(如 master)执行 rebase
- 使用
--force-with-lease 而非 --force 推送
- 如有不确定,先询问用户选择
完整示例
git branch -v
git status
git fetch origin master
git rebase origin/master
git push origin feature-branch --force-with-lease