【Git】如何同步 Gitee 和 Github 的仓库(超简单)
本篇博客的设置方法同样可以适用于 gitlab 等其他平台
不多 bb,直入主题⏲
实现两个仓库的同步
1. 准备两个仓库
分别在两个平台创建一个相同名字的仓库,当然,你也可以在 a 平台上导入 b 平台已有的仓库,github 和 gitee 目前都支持从别的平台导入仓库
这部分操作想必大家都会,就不演示了
2. 克隆到本地
需要注意的是,你要保证其中一个是主仓库。如果是多人合作仓库的话,想两个平台的远程仓库同时多人合作并保持同步是相对困难的。
以我创立的这个多人 OJ 打卡仓库为例,现在我想得到的效果是,我和朋友们在 gitee 上面进行打卡协作,然后我通过 git 操作将这个仓库同步到 github 上面,仅供展示
当然如果有小伙伴愿意用 github 进行 fork 和 pull request 操作那我也是举双手双脚赞同 + 欢迎的
需要做的是,既然 gitee 是主战场,那就对 gitee 进行克隆操作
1 | git clone https://gitee.com/musnow/LetsOJ.git |
3. 设置第二个仓库的 url
克隆完毕后,直接进入该仓库的.git
文件夹,修改 config
文件
在原本 gitee 的 url 后面,添加 github 的仓库 url
执行 git remote -v
,你可以看到 github 链接的仓库也显示了出来,后面带有 push
后缀,代表我们只能往这个仓库上传,并不能执行 git pull
操作
这时候的设置已经完成了,你可以进行一次修改文件后的 git push
操作,两个仓库都可以同步!而且上传的编号都是相同的!
这时候的基本设置就已经完毕了!如果你还想做到能从 github 仓库中进行 pull
操作,那就接着往下看
4. 关于 pull 操作
前面提到,github 仓库的 url 后面有一个 push
后缀,代表我们不能从这个仓库里面获取更新
你如果修改了 github 的仓库,执行 git pull 操作,会显示 Already up-to-date.
因为系统检索的是 gitee 仓库的修改,并不知道你的 github 仓库有无修改
这时候可以执行下面的语句
1 | git remote add github git@github.com:musnows/Lets_OJ.git |
再次 git remote -v
,可以看到在远程仓库中多出来了一个 github 为名字的仓库类型,而且这一次的仓库是可以 fetch
也就是获取内容的
这时候你可以执行
1 | git pull github |
即可获取 github 仓库的最新更新
这样就实现了 gitee 仓库和 github 仓库的多端同步啦!
5. 效果演示
现在我让朋友在 gitee 的仓库中上传一个内容
执行 git pull
,可以看到系统从 gitee 的仓库中更新了内容
这时候你执行 git status
,理论上来说会出现新文件对吧?并不会
毕竟这时候系统检查的还是 gitee 主仓库,内容都是完全同步的
我们也不需要写 git add和git commit
,直接执行 git push
即可!
再打开 github 瞅瞅,你会发现已经同步成功了!
提醒
强烈建议:如果是多人合作仓库,请确保在某一个平台作为主战场,另外一个平台仅作展示(留档)使用!
不过我发现了一个好事,那就是当我从 gitee 导入这个仓库到 github 的时候,github 不仅会自动同步小绿点,还会将这个仓库的协作者同样显示出来(前提是协作者在 github 上面有同邮箱注册的账户)
一些问题的解决
1. 关于 github 克隆网络访问问题
关于克隆 / 上传 github 问题,很多都是因为使用 https 链接导致的
我们需要使用 ssh 私钥来实现 github 仓库的免密操作
1 | ssh-keygen -t rsa -C "你的gitee/github账户邮箱" |
cd
进入.ssh
隐藏文件夹,找到生成的密钥 pub 文件
cat
查看该文件里面的内容,将其复制
在 github/gitee 的个人设置页面,你都能找到 ssh 密钥的添加处
添加 ssh 密钥后,你就可以通过 ssh 链接来对 github 进行操作了,这时候一般就不会出现网络问题了!
2…… 还没遇到
……😂
结语
关于这项操作,网络上有很多相似内容,但总有些货不对板,不符合我的需求。所以就自己写了个博客
有任何问题都可以在评论区提出!