如何保持与 fork 仓库同步
前言
当 fork 的仓库有了新的 commit 后,则与出现与原仓库不一致的情况,而 GitHub 不会自动同步变化,最简单的方式是直接 delete 掉 fork 的仓库,重新 fork ,现提供一个新的思路。
删除,重新 fork 应当是最后的选择。
准备
git bash,Windows 10
为了简化教程,现做出一些规定
- 被 fork 的仓库称为 A 库
- fork 出来的库称为 B 库
- 本地的仓库称为 C 库
步骤
本质上是增加个上游的 remote,fetch 合并到本地,然后同步推送到自己 fork 的远程仓库
添加 upstream
cd 到 git 文件夹,检查远程仓库路径
git remote -v
- 只有两行就代表只有 B 库,因此需要添加 upstream,一般添加一次后面无需再重复
git remote add upstream https://github.com/upstreamName/repo.git
- 再次重复 1 中的动作
- 执行
git status
检查本地是否有更改,使 C 库与 B 库保持一致,减少不必要的冲突。
merge
- 执行命令
git fetch upstream
抓取 A 库最新更新到 C 库 - 执行
git checkout branchName
切换到想调整的 C 库分支 - 执行
git merge upstream/branchName
将 fetch 的 A 库与 C 库对应的分支合并 - 执行
git status
查看状态,git push origin branchName
将修改推送到 B 库,完全 B 库与 A 库的同步
参考
https://github.com/selfteaching/the-craft-of-selfteaching/issues/67