Git双仓库同步更新
# Git双仓库同步更新
需求:
gitee
上开源了一个仓库,同时想把该仓库同步到github
- 或者将
github
上的仓库同步更新到gitee
上,这样在gitee
网站上可以手动点击强制更新可以实现,但是每次手动更新太麻烦了- 我最开始的想法是利用
gitee
或者github
的webhook
功能,写一个后端服务,接收post
请求,然后去更新目标仓库- 但是这种方法太沉重了,于是想到是否可以用双仓库通过标记的形式去实现
- 幸运的是,我成功了
- 架构图
# 导入仓库
笔记
我做的是gitee
同步更新到github
在
github
从gitee
导入原始仓库登录
git
新建仓库
如果是公开的仓库可以不用填
2
在服务器上
clone gitee
远端代码到本地# 克隆代码 git clone git@gitee.com:zhangtqup/hexo-theme-matery.git cd hexo-theme-matery/
1
2
3
# 添加另一个远端仓库
添加
github
远端仓库# 查看远端仓库 git remote -v ###origin git@gitee.com:zhangtqup/hexo-theme-matery.git (fetch) ###origin git@gitee.com:zhangtqup/hexo-theme-matery.git (push) # 在这里可以看到gitee 默认给远端起了一个别名是origin # 为了方便区别,我们将该远端删除,同时添加gitee和github两个远端仓库,同时设置对应别名 # 删除 git remote rm origin # 添加别名为gitee 和github对应的远端,地址分别为两个仓库地址 git remote add gitee git@gitee.com:zhangtqup/hexo-theme-matery.git git remote add github git@github.com:StarsPicking/hexo-theme-matery.git git remote -v ### gitee git@gitee.com:zhangtqup/hexo-theme-matery.git (fetch) ### gitee git@gitee.com:zhangtqup/hexo-theme-matery.git (push) ### github git@github.com:StarsPicking/hexo-theme-matery.git (fetch) ### github git@github.com:StarsPicking/hexo-theme-matery.git (push)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 同步
笔记
- 网络条件允许可以向
github
推送代码
cd hexo-theme-matery/ #测试同步test.txt文件 vi test.txt git add test.txt git commit -m '测试推送' # 向两个仓库同时推送 git push gitee master git push github master
1
2
3
4
5
6
7
8为了方便,这里新建
push.sh
脚本,将两条命令合并vi push.sh # 写入以下内容 git push gitee master git push github master
1
2
3
4需要
push
代码时执行sh push.sh
进行推送
# 增加中转服务器(后续)
- 我的本地笔记本代理到期了,无法直接推送到
github
了- 我有一台阿里云服务器,在服务器测试可以向github推送代码
- 于是将本地环境搬迁到了云上
- 代码写好之后我是先在本地推送到
gitee
,然后通过在服务上通过``merge`的方式推送代码
# 本地添加脚本
vi togit.sh # 通过中转服务器,将代码同步更新到github ssh zhangtianqing@www.zhangtq.com -p 22 "cd /home/zhangtianqing/beautify_cnblogs && git pull gitee master && git merge github/master && git push github master"
1
2
3去除原本的
push
脚本rm push.sh
1更新本地远程仓库信息
这一步可以不做,推送的时候使用
git push gitee master
就可以,我是直接在本地删除了双仓库配置然后在服务器配置双仓库
git remote -v # 可以看到有之前新建的gitee 和github为别名的仓库信息现在本地用不到双仓库了 git rm remote gitee git rm remote github # 配置gitee仓库 git add remote origin git@gitee.com:zhangtqup/hexo-theme-matery.git
1
2
3
4
5
6
7将脚本推送到
gitee
git push origin master
# 将代码克隆到服务器
登录我的阿里云服务器
将代码
clone
到服务器git clone git@gitee.com:zhangtqup/hexo-theme-matery.git
1重复1.2的步骤
至此,可以实现两个平台的代码同时推送了
后期在自己电脑编写的代码,执行
sh togit.sh
就可以先更新到gitee
, 然后通过脚本,自动连接到阿里云,在阿里服务器上,通过配置项目的双仓库,实现gitee
拉取代码,然后合并到github/master
上进行推送
编辑 (opens new window)
上次更新: 2024/12/18 13:52:41