gitlab或github下fork后如何同步源的新更新内容?
19 个回答
Syncing a fork
上面两个链接是GitHub官方的帮助文档中关于fork同步的说明。
如果你懒得看英文,写可以看我的博客:
同步一个 fork--------------------------
简单的说就是:
- 给fork配置远程库
-
使用
git remote -v
-
确定一个将被同步给 fork 远程的上游仓库
git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git
-
再次查看状态确认是否配置成功。
- 同步fork
-
从上游仓库 fetch 分支和提交点,提交给本地 master,并会被存储在一个本地分支 upstream/master
git fetch upstream
-
切换到本地主分支(如果不在的话)
git checkout master
-
把 upstream/master 分支合并到本地 master 上,这样就完成了同步,并且不会丢掉本地修改的内容。
git merge upstream/master
-
如果想更新到 GitHub 的 fork 上,直接
git push origin master
就好了。
2021年5月8日更新:难道github也有人上知乎?我发现现在github增加了一键把原始仓库同步到自己的fork的功能。即下图中的鼠标指向的“Fetch upstream”功能!

原来的方法依然有效:
在github网页上点几下(pull request功能)即可达到的你的目的。
举个栗子:
a开发者: JiaoXianjun / openwifi
b开发者: open-sdr/openwifi
a开发者(你)想要同步b开发者的最新更新。
1。a开发者打开自己的页面:(注意看鼠标停在pull request那了)

2。a开发者点击Pull request。此时默认的同步方向是把a(你)的工作同步给b,这不是你想要的功能。

别急,往下看。
3。 鼠标点击右边,选择为b的仓库。

4。此时得到下图,两边都是b的,这仍旧不是你想要的。好在快了,看我鼠标停在了compare across forks。

5。点击compare across forks,然后我们就接近了。此时,左边右边都会变成b的

6。将左边选为a(你)的

7。此时如果github对比了b和a的,认为b比a有更新,则会出现下面的页面。看我鼠标停在哪。

8。点击Create pull request,出现下面页面。这就是把b同步给a的pull request。再次看我鼠标停在哪。

9。继续点击Create pull request。这是生成一个面向a的pull request。a(你)只需要批准。看我鼠标停在哪。

10。a(你)点击Merge pull request,然后Confirm merge

11。b同步给a的目标达成!
