文档章节

如何同步多个 git 远程仓库

taadis
 taadis
发布于 07/12 10:45
字数 1003
阅读 3131
收藏 93

日常需求

以前源码是托管在 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

有链接有真相:

可以看到, 使用上和最初没有任何区别, 只是多配置了一次, 算是实现了 "最多配(跑)一次".

总而言之

几种方式, 各取所需咯.

© 著作权归作者所有

taadis

taadis

粉丝 6
博文 541
码字总数 87847
作品 0
温州
其他
私信 提问
加载中

评论(14)

嘻酱
嘻酱
马克马克
z
zb24930729
阔以阔以,又学习了
catroll
catroll
两个 remote url 的方式确实第一次了解到,学习了
taadis
taadis 博主
不管你会不会, 姿势就在那里, 需用时方恨少.😏
s
smallwhite110
感谢分享。
taadis
taadis 博主
希望有所获😁
史莱姆软
史莱姆软
mark
taadis
taadis 博主
you need to do and try again.😏
Chriesh
Chriesh
好东西!我看标题以为你会用bash,想不到修改git config就行,学习了👏
taadis
taadis 博主
手动修改 git config 是为了更好的说明情况, 人们总是相信直接看到的, 已经补充对应的 git 操作命令, 可以再看一遍哦.
wad12302
wad12302
密密麻麻扩扩扩
taadis
taadis 博主
额, 大兄弟, 玩啥呢...
wad12302
wad12302
觉得有帮助,留足迹,容易查看😜
git用网盘做版本仓库,实现异地同步[待验证]

git在不用github这种远程仓库时,如何实现异地同步呢? 下班前提交代码,回家后同步代码继续开发并提交,第二天来公司继续…… 这里做个实验:用网盘的目录同步功能,我们打造一个"伪远程仓库...

吾爱
2014/09/01
848
1
Git同步本地项目到GitHub

相信很多朋友都曾遇到过这样一个问题,想要在另一台电脑上同步你的个人项目,以便能身居‘异地’也依然能同步开发!所以我们把自己的项目同步到远程仓库,想在哪里里开发,就pull到本地改完再...

歇歇
2017/11/15
0
0
使用git遇到的问题

1 Pixhawk---fatal: Not a git repository (or any of the parent directories) 1 执行git remote add origin (代码仓库地址)git@git.oschina.net:GShuai/sswuf.git 先要cd 本地文件夹 但是文......

codeShuai
2017/11/13
0
0
git常用命令

git 官方文档 :https://git-scm.com/book/zh/v... 基础 查看git checkout的命令帮助 克隆远程仓库到本地 查看当前分支状态 将m.js放到暂存区域 提交更新并且添加备注desc 跳过使用暂存区域直...

marginyu
2017/09/16
0
0
GIT 远程仓库:添加远程库、从远程库克隆

到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了。 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了...

天王盖地虎626
03/07
10
0

没有更多内容

加载失败,请刷新页面

加载更多

Unable to connect to the server: x509: certificate signed by unknown authority

一、问题 当kubeadm安装完k8s后,使用kubectl命令,提示Unable to connect to the server: x509: certificate signed by unknown authority。 二、 解决 配置用户使用kubectl访问集群 $ mkdi...

人中泰迪
37分钟前
4
0
SpringBoot设置项目访问路径

今天配置Springboot项目访问路径遇到一个小坑,这里做一个记录。针对Springboot2.0以下版本和以上版本的配置方式是不同的。这里针对yml配置文件做记录,properties文件配置方式相同。 Spring...

王子城
42分钟前
5
0
Redis 序列化方式StringRedisSerializer、FastJsonRedisSerializer和KryoRedisSerializer

当我们的数据存储到Redis的时候,我们的键(key)和值(value)都是通过Spring提供的Serializer序列化到数据库的。RedisTemplate默认使用的是JdkSerializationRedisSerializer,StringRedis...

xiaolyuh
53分钟前
5
0
jquery通过css的color属性实现选取特殊颜色的内容

今天一个朋友问到怎么使用jQuery选取特定颜色的内容,以前没有遇到过这样的需求。首先,很多人可能想到使用jQuery属性选择器来实现,这是不可以的,因为 color 是 css 的属性,而不是 html 的...

前端老手
今天
3
0
python3 网络爬虫开发实战 win10环境下 图形验证码识别需要安装的工具及地址

先下载安装tesseract exe文件 tesseract exe文件安装下载地址:https://digi.bib.uni-mannheim.de/tesseract/ win下直接下载双击安装即可,注意路径,下面用于配置环境变量。 参考网址: ht...

S三少S
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部