Github上Fork别人的仓库,怎么保持自己的仓库内容和原始仓库同步

最近在和其他小伙伴一起翻译Pandas的中文文档(这里先附上网址:https://www.pypandas.cn/),多人一起翻译的时候就会遇到一个问题:大家都从原始仓库Fork了一个仓库到自己的Github的账号中,翻译完提交Pull Request(以下简称PR)的时候发现远程仓库已经有了更新(其他小伙伴在自己之前提交了一个PR),这个时候我们就需要把原始仓库的内容先更新到自己的仓库中,合并之后再提交PR。所以本文就重点介绍如何将原始仓库的代码同步到自己的仓库中

正式开始之前我们先做出如下约定:

1、我先在Llrookie这个账号下创建一个仓库first_repo作为原始仓库

2、然后我在Y-sir这个账号中Fork上面那个仓库提交PR用。

上面两张图是我刚Fork之后的,大家看到README.md文件是一样的。

接下来我在原始仓库的README.md文件中增加一行内容“Llrookie has updated it”,同时在Fork的仓库中的README.md中增加一行内容“Y-sir has updated it”。

同步原始仓库的内容有两种方式,一种是直接在网页端操作,一种是使用Git用命令操作。

一、网页端操作

Y-sir账户在原始仓库中向Fork的仓库提交PR。

1、点击下面的链接进入原始仓库

2、然后依次进入 Pull requests  >  New pull request

3、点击compare across forks

4、我们将左边的设置成Fork的仓库,右边的设置为原始仓库(此时页面会刷新),然后点击Create pull request

上面的红色提示字体是因为我们在两个仓库中同时做了修改,内容有冲突,所以需要我们自己手动解决冲突。

此时你可以在Fork的仓库中看到一个PR,像下面这样:

需要注意的是,此时的PR是有冲突的,不能自动合并(如果Fork的仓库没有修改的话就可以自动合并,不需要后续步骤),所以我们首先需要解决冲突,解决冲突有两种方式,一种是在Github Desktop中解决(需要下载安装),一种是用命令行来解决(点击use the command line会给出解决冲突的命令,按照它的提示做就好了)。为了明确一点,我这里用Github Desktop来解决。

紧接着在文本编辑器里面打开README.md文件,自己手动解决冲突。

解决冲突之后merge到自己的分支就可以commit,然后push

 

二、Git命令操作

假如现在已经将Fork的仓库Clone到本地,并且在该仓库的README.md文件中做了修改。

1、首先在本地first_repo仓库路径下执行git remote add upstream https://github.com/Llrookie/first_repo.git命令。然后就可以看到该仓库有两个远程仓库。

2、然后执行git fetch upstream,将原始仓库的内容检出,再执行git checkout master切换到master分支,执行git merge upstream/master将原始仓库的内容合并到master分支。

因为两个仓库都做了修改,所以看到有冲突。手动解决冲突之后就可以commit,然后push了。

 

好了,以上就是Fork的仓库怎么保持内容跟原始仓库同步的两种方式。因为这里我们是Fork之后两个仓库做了改动,所以提交的时候会有冲突存在,需要解决冲突就显得麻烦一点了。如果Fork的仓库没有改动只是原始仓库改动的话是可以自动合并的。

点个赞呗:程序员虾说 » Github上Fork别人的仓库,怎么保持自己的仓库内容和原始仓库同步

赞 (1) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

请作者喝杯咖啡~

支付宝扫一扫打赏

微信扫一扫打赏