如何进行多平台托管
Lin. 切图仔

前言

笔者上个博客博客源码丢失,一段时间心灰意冷的。最近心血来潮,就重新搭了现在这个博客;目前源码分别放在 Github 跟 Gitee 上面,一般都只配置一个,那么如何将代码同时提交到 Github 和 Gitee 上呢?

多个远程仓库的使用

目前 git 是支持多仓库的,温习一下,例如你已经把代码放在 Github 上托管了。

配置sshkey

生成SSH Key,并添加到Gitee

1
ssh-keygen -t rsa -C "xxxxx@xxxxx.com" 

如果弹出下面提示,直接回车即可。(若已存在,会提示是否替换,输入Y再回车),会在你的磁盘目录【C:\Users\你的用户名.ssh\】中生成公钥,将文件【id_rsa.pub】中的内存拷贝,一般是id_xxx.pub。

avatar

配置gitee sshkey

avatar

大公告成!

查看远程仓库

查看本地的远程仓库情况

1
git remote

如果没有修改过默认配置,不出意外的话,会输出:

1
origin

origin指向远程仓库的名称,是你在 clone 项目时 git 为你默认创建的。

我们可以通过命令查看 origin 指向的远程仓库地址

1
git remote -v

输出结果:

1
2
origin https://github.com:linzefan0612/blog.git (fetch) 
origin https://github.com:linzefan0612/blog.git (push)

这个命令会读写远程仓库的名称和地址,这里指向的是github

远程仓库重命名

为了更好区分github 跟 gitee仓库地址的区分,我们可以修改github名称。通过命令: git remote rename <old_remote> <new_remote>

1
git remote rename origin github

输入查看远程仓库命令git remote -v,验证是否成功,输出结果:

1
2
github git@github.com:linzefan0612/blog.git (fetch) 
github git@github.com:linzefan0612/blog.git (push)

修改成功,可以清晰地看到指向的地方

添加gitee仓库

下面我们再添加Gitee上的远程仓库,首先在Gitee上创建一个空的仓库,名称与Github上相同。

然后在【克隆/下载】处复制地址。
avatar
添加远程仓库命令: git remote add <remote> <url>

1
git remote add gitee git@gitee.com:linzefan0612/blog.git

再来验证下是否成功git remote -v,输出结果:

1
2
3
4
gitee   git@gitee.com:linzefan0612/blog.git (fetch) 
gitee git@gitee.com:linzefan0612/blog.git (push)
github git@github.com:linzefan0612/blog.git (fetch)
github git@github.com:linzefan0612/blog.git (push)

大功告成!

多个远程仓库的推送/拉取

因为我们配置了多仓库,推送和拉取再也不能像以前那样git pushgit pull了,需要指定对应的远程仓库名称。命令如下:git push <remote> <branch>、git pull <remote> <branch>

1
2
3
4
5
git push github master
git pull github master

git push gitee master
git pull gitee master

如果不想每次操作都带分支,我们可以把本地分支与远程分支进行关联git branch --set-upstream-to=<remote>/<remote_branch> <local_branch>

1
git branch --set-upstream-to=gitee/master master

关联后就可以不用指定分支进行操作了

1
2
3
4
5
git push github
git pull github

git push gitee
git pull gitee

常见错误及解决方案

凡是都不是一帆风顺的,如果遇到一些错误,可以参考下面的问题单

提示未指定分支

  • You asked to pull from the remote ‘gitee’, but did not specify
    a branch. Because this is not the default configured remote
    for your current branch, you must specify a branch on the command line.

表示本地分支与远程分支未做关联,执行下面命令,进行关联即可:git branch --set-upstream-to=<remote>/<remote_branch> <your_branch>

1
git branch --set-upstream-to=gitee/master master

提交历史不同

  • fatal: refusing to merge unrelated histories
    原因是两个分支是两个不同的版本,具有不同的提交历史导致,执行以下命令即可:git pull gitee origin master --allow-unrelated-histories

gitee ssh key 失效

按照百度教程,生成的ssh key 还是连接失败,原因是,最新版本git使用了OpenSSH 8.8,gitee暂不支持,解决方案有以下

  1. 配置OpenSSH服务允许使用RSA-SHA1key

    1
    2
    3
    4
    在 ~/.ssh/config 加上如下配置
    Host gitee.com
    HostkeyAlgorithms +ssh-rsa
    PubkeyAcceptedAlgorithms +ssh-rsa
  2. 换用其他算法生成ssh key,之后到Gitee重新添加公钥即可

    1
    ssh-keygen -t ed25519 -C "your@example.email"
  3. 暂时不要使用OpenSSH 8.8及以上版本

  • 本文标题:如何进行多平台托管
  • 本文作者:Lin.
  • 创建时间:2021-11-08 23:56:32
  • 本文链接:http://www.linzefan.top/hexo-blogs2021/11/08/如何进行多平台托管/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论