执行 git rebase main
变基(Rebase)是将一系列提交移动到新的基础提交上的过程。它通过重新应用提交来重写项目历史。
变基过程包含两个主要步骤:
结果是当前分支的所有提交都基于目标分支的最新状态。
重要警告: 永远不要对已经推送到公共仓库的提交使用变基。变基会重写提交历史,这会给其他协作者带来严重问题。
将当前分支变基到目标分支
交互式地选择如何处理每个提交
解决冲突后继续变基过程
跳过当前有问题的提交
完全中止变基过程
将提交从一个基础变基到另一个基础
自动储藏和恢复未提交的更改
保持原始作者日期
即使可以快进也创建新的提交
变基所有提交(从第一个提交开始)
保留空的提交
最佳实践: 在执行变基前,确保你的工作目录是干净的。如果有未提交的更改,使用git stash先储藏它们,或使用git rebase --autostash自动处理。
确保工作目录干净
git rebase <target-branch>
处理任何合并冲突
git rebase --continue
变基过程中可能遇到的冲突类型:
git add标记冲突已解决git rebase --continue继续提示: 使用git status查看哪些文件有冲突,使用git rebase --abort可以完全取消变基操作。
交互式变基允许你编辑、重新排序、合并或删除提交。这是整理提交历史的强大工具。
编辑最近3个提交:
技巧: 使用git log --oneline查看提交历史,确定要变基的提交范围。交互式变基是整理本地分支历史的理想工具。
将多个小提交合并为一个有意义的提交。
改变提交的顺序以创建更合理的逻辑流。
修复拼写错误或改进提交描述。
将一个大的提交拆分为多个小提交。
警告: 交互式变基会重写提交历史。确保只在本地分支上使用,并且不要对已经推送到远程仓库的提交使用交互式变基。
恢复变基: 如果变基出错,可以使用git reflog找到之前的提交,然后使用git reset --hard恢复。
| 方面 | 变基 | 合并 |
|---|---|---|
| 历史记录 | 线性、整洁 | 保留分支结构 |
| 安全性 | 较低(重写历史) | 较高(不改变历史) |
| 冲突解决 | 在功能分支解决 | 在合并时解决 |
| 适用场景 | 个人分支、本地整理 | 团队协作、公共分支 |
| 学习曲线 | 较陡峭 | 较平缓 |
黄金法则: 永远不要对已经推送到公共仓库的提交使用变基。只对你本地仓库中尚未共享的提交使用变基。
现代工作流建议: 在个人功能分支上使用变基来保持历史整洁,然后使用合并请求(Pull Request)将功能分支合并到主分支。这样既保持了主分支历史的清晰,又确保了团队协作的安全性。