场景
- 同步 upstream 仓库的更改到自己的 fork
- fork 仓库的分支与 upstream 的分支有冲突
- 仅更新自己的 fork 分支, 并保持提交记录整洁
步骤
- Clone 自己的 Fork 仓库 (Via SSH)
bash
git clone [email protected]:your-username/your-fork.git
- 添加上游
bash
git remote add upstream https://github.com/upstream-owner/upstream-repo.git
- 获取上游变更并 rebase
bash
git fetch upstream
git rebase upstream/main
- 切换到需要合并的分支
这里是 main
分支
bash
git checkout main
- 合并
bash
git merge upstream/main
- 解决冲突并提交
一一编辑所有提示的冲突文件以解决合并冲突, 我比较喜欢用 VSCode .
完成后, 提交更改:
bash
git commit
- 推送到自己的 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.