Git Rebase 操作指南

首先确保配置好上游仓库

git remote -v
git remote add upstream [repo address]

上游仓库可以取名为 upstreamforkgitee 等等

更新上游内容到本地

git fetch upstream

确保自己在功能分支

git checkout your-branch-name

在 rebase 开始之前,将功能分支推送到远程,作为备份

git push origin your-branch-name

开始基于上游的 main 分支 rebase

git rebase upstream/main

解决冲突

如果有冲突,文件内容会变这样

<<<<<<< HEAD
const timeout = 5000;
=======
const timeout = 10000;
>>>>>>> upstream/main

解决冲突的过程,就是

推荐使用 VS Code 的 Merge Conflict UI 来帮忙

解决复杂的冲突

  1. 先 Squash 再 Rebase
  2. 终止 (git rebase --abort) ,想想其它的办法 (比如,从 main 建一个干净的分支,在上面手工应用变更)
  3. 使用 git rerere (很少用到)

当所有的冲突已解决

git add path/to/resolved/file
git rebase --continue

事后检查

git log --oneline upstream/main..HEAD

构建并测试

强推

git push --force-with-lease origin your-branch-name

注意,不要在 main 或者共享分支上强推。只在仅有自己贡献的功能分支上强推。

如果彻底搞砸了

  1. 将任何想要保存的工作推送到远程仓库 (remote fork),可以是一个临时分支
  2. 删除本地的克隆仓库 (local clone)
  3. 从远程仓库重新克隆一份干净的代码
  4. 重新添加上游远程仓库 (upstream remote)
  5. 重新开始 rebase 流程

还有

Rebase 会重写提交历史。

对于只有一个人在开发的功能分支 (feature branches),这没有问题;但对于其他人已经基于其开展工作的分支,这样做是不妥的。如果你正在与他人协作开发某个分支,请在 rebase 前进行协调,或者直接使用合并提交 (merge commits) 代替。

发表于 2026 年 3 月 10 日,星期二
更新于 2026 年 5 月 4 日,星期一