多个远程Git仓库代码及版本同步

巨人的肩膀:

How to keep two Git repositories in sync

需求

项目代码存在多个远程Git仓库里(例如:Github、Gitlab、Gitee),需确保不同远程仓库代码版本一致。
初次搭建仅需3步!以后同步只需1步!

操作步骤

1、检出源仓中的项目

# 到代码缓存目录
cd ~/code-sync
git clone --mirror https://github.com/jack/my-project.git

2、增加第二个远程仓库Git

cd my-project.git
git remote add --mirror=fetch secondary https://gitee.com/jack/my-project.git

3、同步

cd ~/code-sync/my-project.git
git fetch origin
git push secondary --all

以后需要同步时,只需执行第3步即可

升级版

上述步骤封装到脚本2个中:项目同步初始化脚本init_pro_sync.sh、项目同步脚本sync-项目名.sh

使用说明:
1、修改init_pro_sync.sh【TODO】部分配置
2、执行init_pro_sync.sh,自动在CODE_DIR目录创建:{项目名}.git目录、sync-{项目名}.sh同步脚本
3、以后需要同步时,仅需执行 sync-{项目名}.sh同步脚本 即可
Tips:
建议将CODE_DIR目录添加到环境变量中,缩短输入的脚本路径

脚本:

1、cf.sh:

#!/bin/bash
#公共变量
# 本地缓存目录
BASE_DIR=~/code-sync/

2、init_pro_sync.sh:

#!/bin/bash

# 引入公共变量
source cf.sh

### 【TODO】按需修改下面参数即可:
# 项目名
PRO_NAME=my-project
# 本地缓存目录-> 从公共变量cf.sh中获取
# BASE_DIR=/Users/zxc/code-sync
# 项目 源Git仓库地址(以/结尾)
FROM_GIT=https://github.com/jack/
# 项目 目标Git仓库地址(以/结尾)
TO_GIT=https://gitee.com/jack/


PRO_GIT_NAME=$PRO_NAME.git
cd $BASE_DIR
git clone --mirror $FROM_GIT$PRO_GIT_NAME
cd $PRO_GIT_NAME
git remote add --mirror=fetch secondary $TO_GIT$PRO_GIT_NAME

# 开始第一次同步
git fetch origin
git push secondary --all


# 生成每次同步的sh
cd $BASE_DIR
file_name="sync-${PRO_NAME}.sh"
cat > $file_name << EOF
#!/bin/bash
# 引入公共变量
source cf.sh
cd \$BASE_DIR
cd $PRO_GIT_NAME
git fetch origin
git push secondary --all
EOF

# 授权可执行
chmod +x $file_name
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值