git fork 后如何与原仓库同步

有时候我们需要 fork 别人的仓库,对代码进行修改,但是在原仓库进行更新时又不想重新 fork,那样会覆盖掉自己已有的修改,这时候我们就需要对原仓库的更新进行 merge,本文将从 fork 开始讲解如何进行操作

fork 仓库

这里以 https://github.com/catch6/hexo-client.git 这个仓库为例,在 github 中点击 fork 按钮对别人的仓库进行 fork

执行 git clone https://github.com/catch6/hexo-client.git 命令克隆到本地

执行 git remote -v 命令查看远程仓库路径,输出如下:

1
2
origin	https://github.com/catch6/hexo-client.git (fetch)
origin https://github.com/catch6/hexo-client.git (push)

如果只有上面 2 行,说明你未设置 upstream (中文叫:上游代码库)。一般情况下,设置好一次 upstream 后就无需重复设置。

执行命令 git remote add upstream https://github.com/gaoyoubo/hexo-client.git 添加上游,该命令没有任何输出

执行命令 git remote -v ,可以看到以下变化

1
2
3
4
origin	https://github.com/catch6/hexo-client.git (fetch)
origin https://github.com/catch6/hexo-client.git (push)
upstream https://github.com/gaoyoubo/hexo-client.git (fetch)
upstream https://github.com/gaoyoubo/hexo-client.git (push)

执行命令 git status 检查本地是否有未提交的修改。如果有,则把你本地的有效修改,先从本地仓库推送到你的 github 仓库。最后再执行一次 git status 检查本地已无未提交的修改。

执行命令 git fetch upstream 抓取原仓库的更新

执行命令 git checkout master 切换到 master 分支

执行命令 git merge upstream/master 合并远程的 master 分支

执行命令 git push 把本地仓库向 github 仓库(你 fork 到自己名下的仓库)推送修改