由于国内同步到Gitee更方便,国外同步到github更方便,需要把同一套代码同时同步到Gitee和github。把这个过程记录下来。
同时,由于github禁止了用户名和密码来认证,因此,这里对于Gitee和github统一采用ssh认证。注意,选择ssh认证之后,代码库clone的命令的细节会和用https的方式不同。
第一步,生成ssh key公钥和私钥对。可以采用不同的协议。在这里用rsa格式。进入~/.ssh目录下,输入命令:
$ ssh-keygen -t ed22519 -C "YourGIthubEmailbox" -f "github_id_rsa"
直接两次回车.会在文件夹下生成github_id_rsa和github_id_rsa.pub.Gitee已经不允许rsa编码的公钥,因此,改成ed22519。
第二步,把github_id_rsa.pub的内容添加到github的SSH Keys中,取个名字,保存。
针对Gitee,重复这个过程。
第三步,在~/.ssh
文件夹下新建config
文件,添加以下内容
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa
第四步,添加识别 SSH keys 新的私钥。为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中
$ ssh-agent bash $ ssh-add ~/.ssh/github_id_rsa $ ssh-add ~/.ssh/gitee_id_rsa
第五步,测试是否连接成功。运行如下命令,看是否受到欢迎信息:
$ ssh -T git@github.com $ ssh -T git@gitee.com
这样认证方式就设置好了。下面,我们来建立代码库,来使用这个ssh key认证方式和Gitee以及github连接。
第一,建立本地代码库和远程相连。假设Gitee和github都已经建立代码库,test.git。我们需要查看代码库,获取这个代码库的ssh访问地址,例如 git@gitee.com:XXX/test.git。然后把这个地址通过 git clone和git remote add从其中一个远程代码库创建本地代码库,以及把新创建的本地代码库连接到另一个远程代码库。
$ git clone git@gitee.com:XXX/test.git $ git remote add github git@github.com:XXX/test.git
第二,同步代码库。用git config -e 或者用命令行git remote set-url origin来修改config文件,得到以下的效果(也就是origin下面包含两个远程库的信息,两个远程库分别有自己的名字和信息):
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = git@gitee.com:XXX/test.git url = git@github.com:XXX/test.git [branch "master"] remote = origin merge = refs/heads/master [remote "github"] url = git@github.com:XXX/test.git fetch = +refs/heads/:refs/remotes/github/ [remote "gitee"] url = git@gitee.com:XXX/test.git fetch = +refs/heads/:refs/remotes/gitee/
有了这个状态,就可以通过git add,git commit和git push 来同时把本地库文件push给两个远程库,以及用git pull来从两个远程库pull到本地。如果需要针对独自远程库的push和pull,则用相应的名称,gitee和github就可以。例如
git remote update 同时从两个库拉过来本地;
git pull github master 仅仅从github库拉过来本地;
git push github 仅仅从本地推送到github。
当然,如果只为了同步速度,仅仅使用Gitee也可以,只需要把Gitee的ip地址修改成154.213.2.253。这个地址对于国外用户,会快很多很多。可以通过修改/etc/hosts文件,或者修改ssh下的config文件。