如何保持与 fork 仓库同步

前言

当 fork 的仓库有了新的 commit 后,则与出现与原仓库不一致的情况,而 GitHub 不会自动同步变化,最简单的方式是直接 delete 掉 fork 的仓库,重新 fork ,现提供一个新的思路。

删除,重新 fork 应当是最后的选择。

准备

git bash,Windows 10

为了简化教程,现做出一些规定

  • 被 fork 的仓库称为 A 库
  • fork 出来的库称为 B 库
  • 本地的仓库称为 C 库

步骤

本质上是增加个上游的 remote,fetch 合并到本地,然后同步推送到自己 fork 的远程仓库

添加 upstream

  1. cd 到 git 文件夹,检查远程仓库路径

    git remote -v

image.png

  1. 只有两行就代表只有 B 库,因此需要添加 upstream,一般添加一次后面无需再重复
git remote add upstream https://github.com/upstreamName/repo.git
  1. 再次重复 1 中的动作
    image.png
  2. 执行 git status 检查本地是否有更改,使 C 库与 B 库保持一致,减少不必要的冲突。

merge

  1. 执行命令 git fetch upstream 抓取 A 库最新更新到 C 库
  2. 执行 git checkout branchName 切换到想调整的 C 库分支
  3. 执行 git merge upstream/branchName 将 fetch 的 A 库与 C 库对应的分支合并
  4. 执行 git status 查看状态, git push origin branchName 将修改推送到 B 库,完全 B 库与 A 库的同步

参考

https://github.com/selfteaching/the-craft-of-selfteaching/issues/67

最后修改:2023 年 03 月 27 日
如果觉得我的文章对你有用,请随意赞赏