如何同步多个 git 远程仓库
日常需求
以前源码是托管在 github 的, 现在想要同步托管在 gitee, 一做备份分发, 二方便国内下载使用(网速可观), 三防特色墙...
方式一 使用 gitee 的强制同步
之前在 github 托管了这么一个项目 mirrors-in-china, 后来国内出了 gitee, 那么想着把项目同步一份到 gitee, 方便大家查看... 正巧 gitee 提供强制同步功能, 方便操作...
我还是只用维护 github 那份源码, gitee 这边没忘记的话, 手搓点击下强制同步按钮即可.
但是容易忘记, 造成两边不完全同步.
不过我这个项目本身就非常简单, 这点同步时差完全没大问题, 够用, 并且没有其他任何多余的操作.
方式二 手搓 push 多次
换另一个项目来说, 我之前在 github 托管了这么一个项目 GlobalScanner.Sdk, 应广大小伙伴需求, 希望把项目在国内同步一份, 方便下载/参考/使用.
那么不外乎就是配置多个远程库地址, 多次推送咯, 那么我们先来看看现有远程库的情况:
$ git remote --verbose origin git@github.com:taadis/GlobalScanner.Sdk.git (fetch) origin git@github.com:taadis/GlobalScanner.Sdk.git (push)
可以看到目前仅有 git@github.com:taadis/GlobalScanner.Sdk.git
这个远程库地址.
我们来加一个 gitee 的远程地址, 首先在 gitee 建好同步仓库, 然后我们在本地添加一个新的远程库地址:
$ git remote add giteeorigin git@gitee.com:taadis/GlobalScanner.Sdk.git
添加完成后我们查看一下:
$ git remote --verbose giteeorigin git@gitee.com:taadis/GlobalScanner.Sdk.git (fetch) giteeorigin git@gitee.com:taadis/GlobalScanner.Sdk.git (push) origin git@github.com:taadis/GlobalScanner.Sdk.git (fetch) origin git@github.com:taadis/GlobalScanner.Sdk.git (push)
可以查看到以下2个远程库地址:
- giteeorigin: 是我们新加的 gitee 的远程库地址
- origin: 是我们之前在 github 的远程库地址
接下来同步:
git add . git commit -m "add gitee" git push -u origin master git push -u giteeorigin master
有链接有真相:
比之前多个一次 git push
操作...其他和之前没有太大区别...没有更多的心智负担.
但是经常容易忘记...
方式三 最多跑一次
不想着法偷懒的 coder 不是好程序员, 秉承 "最多跑一次" 的理念, 让我们试试怎么一次 push 统统搞定.
在本地 git 仓库里找到这个文件 .git/config
, 内容如下:
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = git@github.com:taadis/GlobalScanner.Sdk.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [remote "giteeorigin"] url = git@gitee.com:taadis/GlobalScanner.Sdk.git fetch = +refs/heads/*:refs/remotes/giteeorigin/*
改为如下:
合并2个 remote 配置
[core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = git@github.com:taadis/GlobalScanner.Sdk.git url = git@gitee.com:taadis/GlobalScanner.Sdk.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master
上面这个手动配置是为了更好的说明而已, 其实可以用以下命令简化操作, 在 origin 节点下补充了一个新的远程地址.
$ git remote set-url --add origin git@gitee.com:taadis/GlobalScanner.Sdk.git
看看补充后的远程地址情况
git remote --verbose origin git@github.com:taadis/GlobalScanner.Sdk.git (fetch) origin git@github.com:taadis/GlobalScanner.Sdk.git (push) origin git@gitee.com:taadis/GlobalScanner.Sdk.git (push)
注意看后面的 (fetch)(push), 相信你会明白点什么.
然后我们可以继续这样使用来实现 github & gitee 的同步推送和分发:
git add . git commit -m "github & gitee 同步推送和分发" git push origin master
有链接有真相:
- github: github & gitee 同步推送和分发
- gitee: github & gitee 同步推送和分发
可以看到, 使用上和最初没有任何区别, 只是多配置了一次, 算是实现了 "最多配(跑)一次".
总而言之
几种方式, 各取所需咯.
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用Kubectl管理Kubernetes的全解教程
kubectl主要用于与K8s API服务器通信,以在K8s中创建、更新和删除工作负载。不少IT人员通过kubectl与K8s交互。本文将介绍如何安装kubectl、与K8s环境进行通信以及一些常用命令,给您提供管理K8s的良好起点。 对不少IT人员来说,每天与Kubernetes交互的机制一般是通过kubectl——一种命令行工具。kubectl主要用于与Kubernetes API服务器通信,以在Kubernetes中创建、更新和删除工作负载。本教程的目的是概述您可以使用的一些常用命令,并提供管理Kubernetes的良好起点。 我们将介绍如何在您的计算机上安装kubectl,如何与您的Kubernetes环境进行通信并执行一些常见操作。大多数常见的kubectl命令会提供某特定的操作,如创建、删除等。此方法通常需要解释描述Kubernetes中的对象(如POD、服务、资源等)的文件(YAML或JSON)。这些文件通常被用作模板以及环境的持续文档,并有助于保留Kubernetes对声明性配置的关注。命令行上给出的操作将传递给API服务器,然后根据需要与Kubernetes中的后端服...
- 下一篇
死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的
死磕Tomcat系列(6)——Tomcat如何做到热加载和热部署的 热部署就是在服务器运行时重新部署项目,热加载即在在运行时重新加载class,从而升级应用。 通常情况下在开发环境中我们使用的是热加载,因为热加载的实现的方式在Web容器中启动一个后台线程,定期检测相关文件的变化,如果有变化就重新加载类,这个过程不会清空Session。而在生产环境我们一般应用的是热部署,热部署也是在Web应用后台线程定期检测,发现有变化就会重新加载整个Web应用,这种方式更加彻底会清空Session。 热加载 热加载其实我们在开发过程中经常使用,例如我们使用Idea开发时,我们在设置页面可以进行设置,当修改文件时,我们可以选择不重启项目,选择重新加载此文件。而在Tomcat中也能设置,Tomcat默认情况下是不开启热加载的。需要在Tomcat路径下的Context.xml中配置reloadable 参数来开启这个功能。 <Context reloadable="true"/> 我们演示一下Tomcat是如何热加载的。在webapp下我们新建了一个项目,里面的Servlet文件如下 publi...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8