git push origin master一次提交多个远程仓库
一、问题背景
有时候我们可能创建了一个开源项目,想同时在多个远程地址上推送,比如一个平台上的多个仓库,或者不同平台上的仓库进行推送,那么我们可能希望运行一次git push origin master,就希望多个远程仓库都得到代码更新。
二、解决问题
开始前的准备工作:
我首先在D盘上创建了一个typescript_demo的文件夹,然后使用git init初始化仓库,typescript_demo里面是一些ts demo,此处请忽略。
然后分别在github,gitee两个平台创建typescript_demo的仓库,此时就做好了准备工作。
1.首先使用git remote -v进行查看远程仓库的一些信息
git remote -v
可以看到我此时项目的远程仓库信息为空。
2.使用 语法为:git remote add <name> <url>,进行添加远程仓库。name表示远程仓库名称【昵称】, url表示远程仓库的地址
git remote add origin https://gitee.com/hmy001/typescript_demo.git
这里新建了一个名为origin的远程仓库名称,其地址为:https://gitee.com/hmy001/typescript_demo.git
使用git remote -v
可以看到远程仓库origin已经新建成功,并且push【推送】,fetch【抓取】,地址都是从 https://gitee.com/hmy001/typescript_demo.git。
3.追加一个远程仓库,语法:git remote set-url --add <name> <url> ,其中name表示已经存在的远程名称,url表示追加的远程仓库的地址。
现在我们追加github上的一个新的远程仓库:https://github.com/hmy001/typescript_demo.git
例子:
git remote set-url --add otherOrigin https://github.com/hmy001/typescript_demo.git
上面我们可以看到,我们给 otherOrigin 追加一个远程仓库,出现了:no such remote 'otherOrigin ',提示我们没有这个远程仓库,所以追加的时候务必保证远程仓库已存在。
下面给origin追加一个远程仓库,即关联一个远程仓库。
git remote set-url --add origin https://github.com/hmy001/typescript_demo.git
这时候我们使用git remote -v 查看
可以看到origin已经有三个了,新追加的github远程仓库在第三个。
这里的意思就是,我们给origin push时,gitee和github上面的两个远程仓库都会同步跟新。
使用git pull origin时,只会从gitee上拉取代码。
同理,追加第三个,第四个都是使用git remote set-url -add <name> <url>语法即可追加成功。
4.推送代码到多个远程仓库
git add . git commit -m '提交typescript demo' git push origin master
git工具未登录的情况下,git push 时会弹出码云和github的登录窗口,输入账号密码即可,随后代码提交成功。
不过github上显示代码提交时间为49分钟前,码云显示的时1个小时前,按道理时间不会相差这么多才对,因为github虽然国内访问比较慢,但是两者git push时,代码量不多的情况下不应该出现这种情况,这个问题不深究。