考虑到github不能免费创建私有仓库原因,最近开始在使用码云托管项目,这样避免了连接数据库的用户密码等信息直接暴露在公共仓库中。今天突然想到一个点,就是能不能同时把代码推送到github和码云上呢?答案是可以的。
首先,我们在开始一个项目时,在本地写了一些代码,需要同时托管到github和码云(gitee)上。这个时候我们要怎么办呢?请接着看。
实现方法
添加密钥对
在C:\Users\robin.ssh目录下运行git bash
1 | // 这个是给github生成的 |
生成后自行命名管理,这里不再赘述。接着把公钥分别放在github和码云上。私钥可以用config文件管理
1 | # 配置github.com |
接着我们测试一下
1 | ssh -T git@github.com |
成功则会得到这样的反馈
创建仓库
首先是在github和码云上分别创建一个仓库。这个玩过github的都知道,不细说。
接着在本地项目根目录创建git仓库
1 | git init |
本地与remote关联
要把两个remote仓库与本地git仓库关联起来,我们直接来运行
1 | // 添加github的远程库 |
然后我们运行git remote查看添加的远程库列表
1 | git remote |
说明已经添加成功,接着我们分别查看git status,会看到本地有很多文件待提交,接着git add, git commit,最后git push的时候要注意分开push
1 | // push到github主分支 |
虽然麻烦了一点,需要push两次,但是目的是初步达成了。如果想要一次性push解决,那也不是没有办法。
一次性push
为了避免引起歧义,这里先将origin,gitee的remote库删除
1 | git remote rm origin |
重新添加remote
1 | git remote add all git@github.com:cumtRobin/BlogFrontEnd.git |
可以看到,我其实是添加的github的远程库,只不过把它的名字叫做all。接着我们把码云上的remote库也关联起来。
1 | git remote set-url --add all git@gitee.com:tusi/BlogFrontEnd.git |
这样操作以后,就可以运行一条push命令了
1 | git push all --all |
有人说可以改.git/config文件实现。其实刚才上面的命令修改的就是config文件,但是本人建议,多练练命令行,这样也会加深对git的理解。这时候我们再查看一下.git/config文件。可以看到remote all下面是有两个url的。
1 | [core] |
学会了两个托管平台的配置,那使用更多的托管平台也就不难实现了。
ps:再分享一个小技巧,由于我在生成ssh密钥时,加了passphrase,导致我每次push都要输入密码,很烦人。
其实,只要重置一下这个passphrase就可以了。
1 | // 进入到.ssh目录,运行git bash |
2019-04-18
- 补充
git pull
的细节
因为都是从本地 push
代码到远程仓库,很久没有从远程仓库拉取代码了,今天不小心在 github
上改了仓库中的 readme
文件,导致和 gitee
不同步。使用 git pull
报错,慌的一批。
1 | $ git pull |
原来是要使用下面这条命令才行。
1 | $ git pull all master |
上面的 all
是指 remote
,即远程仓库,master
是指分支名,master
即主干分支。
扫一扫下方小程序码或搜索Tusi博客
,即刻阅读最新文章!