距离上次更新本文已经过去了 694 天,文章部分内容可能已经过时,请注意甄别

本篇博客的设置方法同样可以适用于 gitlab 等其他平台

不多 bb,直入主题⏲

实现两个仓库的同步

1. 准备两个仓库

分别在两个平台创建一个相同名字的仓库,当然,你也可以在 a 平台上导入 b 平台已有的仓库,github 和 gitee 目前都支持从别的平台导入仓库

这部分操作想必大家都会,就不演示了

2. 克隆到本地

需要注意的是,你要保证其中一个是主仓库。如果是多人合作仓库的话,想两个平台的远程仓库同时多人合作并保持同步是相对困难的。

https://gitee.com/musnow/LetsOJ

image-20220619173212648

以我创立的这个多人 OJ 打卡仓库为例,现在我想得到的效果是,我和朋友们在 gitee 上面进行打卡协作,然后我通过 git 操作将这个仓库同步到 github 上面,仅供展示

当然如果有小伙伴愿意用 github 进行 fork 和 pull request 操作那我也是举双手双脚赞同 + 欢迎的

需要做的是,既然 gitee 是主战场,那就对 gitee 进行克隆操作

plaintext
1
git clone https://gitee.com/musnow/LetsOJ.git

image-20220619173809133

3. 设置第二个仓库的 url

克隆完毕后,直接进入该仓库的.git 文件夹,修改 config 文件

image-20220619173907538

在原本 gitee 的 url 后面,添加 github 的仓库 url

image-20220619174037903

执行 git remote -v,你可以看到 github 链接的仓库也显示了出来,后面带有 push 后缀,代表我们只能往这个仓库上传,并不能执行 git pull 操作

image-20220619174058888

这时候的设置已经完成了,你可以进行一次修改文件后的 git push 操作,两个仓库都可以同步!而且上传的编号都是相同的!

image-20220619174601414

image-20220619174641243

这时候的基本设置就已经完毕了!如果你还想做到能从 github 仓库中进行 pull 操作,那就接着往下看

4. 关于 pull 操作

前面提到,github 仓库的 url 后面有一个 push 后缀,代表我们不能从这个仓库里面获取更新

你如果修改了 github 的仓库,执行 git pull 操作,会显示 Already up-to-date. 因为系统检索的是 gitee 仓库的修改,并不知道你的 github 仓库有无修改


这时候可以执行下面的语句

plaintext
1
git remote add github git@github.com:musnows/Lets_OJ.git

再次 git remote -v,可以看到在远程仓库中多出来了一个 github 为名字的仓库类型,而且这一次的仓库是可以 fetch 也就是获取内容的

image-20220619175038246

这时候你可以执行

plaintext
1
git pull github

即可获取 github 仓库的最新更新

这样就实现了 gitee 仓库和 github 仓库的多端同步啦!

5. 效果演示

现在我让朋友在 gitee 的仓库中上传一个内容

image-20220619181155085

执行 git pull,可以看到系统从 gitee 的仓库中更新了内容

image-20220619181118789

这时候你执行 git status,理论上来说会出现新文件对吧?并不会

image-20220619181328260

毕竟这时候系统检查的还是 gitee 主仓库,内容都是完全同步的

我们也不需要写 git add和git commit,直接执行 git push 即可!

image-20220619181409683

再打开 github 瞅瞅,你会发现已经同步成功了!

image-20220619181500496


提醒

强烈建议:如果是多人合作仓库,请确保在某一个平台作为主战场,另外一个平台仅作展示(留档)使用!

不过我发现了一个好事,那就是当我从 gitee 导入这个仓库到 github 的时候,github 不仅会自动同步小绿点,还会将这个仓库的协作者同样显示出来(前提是协作者在 github 上面有同邮箱注册的账户)

image-20220619175442691

一些问题的解决

1. 关于 github 克隆网络访问问题

关于克隆 / 上传 github 问题,很多都是因为使用 https 链接导致的

我们需要使用 ssh 私钥来实现 github 仓库的免密操作

plaintext
1
ssh-keygen -t rsa -C "你的gitee/github账户邮箱"

cd 进入.ssh 隐藏文件夹,找到生成的密钥 pub 文件

cat 查看该文件里面的内容,将其复制

在 github/gitee 的个人设置页面,你都能找到 ssh 密钥的添加处

image-20220619175806351

image-20220619175837220

添加 ssh 密钥后,你就可以通过 ssh 链接来对 github 进行操作了,这时候一般就不会出现网络问题了!

2…… 还没遇到

……😂

结语

关于这项操作,网络上有很多相似内容,但总有些货不对板,不符合我的需求。所以就自己写了个博客

有任何问题都可以在评论区提出!