Git 合并上游分支解决冲突

场景

  1. 同步 upstream 仓库的更改到自己的 fork
  2. fork 仓库的分支与 upstream 的分支有冲突
  3. 仅更新自己的 fork 分支, 并保持提交记录整洁

步骤

  1. Clone 自己的 Fork 仓库 (Via SSH)
bash
git clone [email protected]:your-username/your-fork.git
  1. 添加上游
bash
git remote add upstream https://github.com/upstream-owner/upstream-repo.git
  1. 获取上游变更并 rebase
bash
git fetch upstream
git rebase upstream/main
  1. 切换到需要合并的分支

这里是 main 分支

bash
git checkout main
  1. 合并
bash
git merge upstream/main
  1. 解决冲突并提交

一一编辑所有提示的冲突文件以解决合并冲突, 我比较喜欢用 VSCode .

完成后, 提交更改:

bash
git commit
  1. 推送到自己的 Fork
bash
git push origin main

FAQ

忘提前 rebase 了怎么办

之后 rebase 再重新合并, 然后推送时用 --force

bash
git push --force origin main

推送的时候要输入用户名和密码

这时候直接输入用户名和密码可能还会提示错误.

大概率是克隆的时候使用的是 HTTPS 协议而不是 SSH, 密码提示错误是因为 Github 要用 Personal Access Token 代替推送时使用的密码.

把远程仓库地址改为 SSH 协议:

bash
git remote set-url origin [email protected]:your-username/your-fork.git

Q.E.D.
迁移 MySQL8.1+ 到 PostgreSQL17