前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自动从 Gitee 同步到 GitHub 的 Shell 脚本

自动从 Gitee 同步到 GitHub 的 Shell 脚本

作者头像
奶油话梅糖
发布于 2025-03-15 11:59:17
发布于 2025-03-15 11:59:17
12400
代码可运行
举报
运行总次数:0
代码可运行

建议将脚本放在独立目录运行,避免与现有仓库冲突。如需同步多个仓库,可复制脚本并修改配置参数。

以下是一个自动从 Gitee 同步到 GitHub 的 Shell 脚本,包含错误处理和配置验证:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
set -e # 遇到错误立即终止执行

# ===== 用户配置区 =====
GITEE_REPO="git@gitee.com:yourname/project.git"  # 替换为你的Gitee仓库地址
GITHUB_REPO="git@github.com:yourname/project.git" # 替换为你的GitHub仓库地址
LOCAL_DIR="/path/to/local/repo"  # 本地仓库存储路径
BRANCH="main"                    # 要同步的分支名称
# ======================

# 颜色定义(用于终端输出)
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
NC='\033[0m' # 恢复默认

# 创建本地目录(如果不存在)
mkdir -p "$LOCAL_DIR"

# 进入工作目录
cd "$LOCAL_DIR" || { echo -e "${RED}无法进入目录 $LOCAL_DIR${NC}"; exit 1; }

# 初始化/更新本地仓库
if [ ! -d .git ]; then
    echo -e "${YELLOW}▶ 初始化新仓库...${NC}"
    git init
    git remote add gitee "$GITEE_REPO"
    git remote add github "$GITHUB_REPO"
    git fetch --all
    git checkout -b "$BRANCH" gitee/"$BRANCH"
else
    echo -e "${YELLOW}▶ 检查远程配置...${NC}"
    # 动态更新远程仓库地址
    git remote set-url gitee "$GITEE_REPO" 2>/dev/null || git remote add gitee "$GITEE_REPO"
    git remote set-url github "$GITHUB_REPO" 2>/dev/null || git remote add github "$GITHUB_REPO"
fi

# 同步操作
echo -e "${YELLOW}▶ 从Gitee拉取更新...${NC}"
if ! git pull gitee "$BRANCH"; then
    echo -e "${RED}✗ 拉取Gitee更新失败,请检查网络或仓库权限${NC}"
    exit 1
fi

echo -e "${YELLOW}▶ 推送至GitHub...${NC}"
if git push github "$BRANCH"; then
    echo -e "${GREEN}✓ 同步成功!${NC}"
    echo -e "Gitee → ${GITEE_REPO}\nGitHub → ${GITHUB_REPO}"
else
    echo -e "${RED}✗ 推送GitHub失败,请检查以下可能:\n1. SSH密钥配置\n2. 仓库写入权限\n3. 网络连接${NC}"
    exit 1
fi

# 可选:清理过期分支
git remote prune gitee
git remote prune github

使用说明

配置准备

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chmod +x sync_repo.sh  # 添加执行权限

首次运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./sync_repo.sh

定时同步(Crontab示例)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 每天凌晨3点自动同步
0 3 * * * /path/to/sync_repo.sh >> /var/log/repo_sync.log 2>&1

功能特性
  1. 智能仓库初始化
    • 自动检测 .git 目录存在与否
    • 动态更新远程仓库地址(避免手动修改配置)
  2. 双通道容灾
    • 同时保留 gitee/github 两个远程连接
    • 可通过 git fetch giteegit fetch github 单独操作
  3. 安全机制
    • 严格错误检测(网络故障、权限问题等)
    • 分支保护(不会覆盖未跟踪的本地修改)
  4. 日志友好
    • 彩色终端输出关键操作状态
    • 适合集成到CI/CD流水线

故障排查

SSH连接测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ssh -T git@gitee.com  # 应返回欢迎信息
ssh -T git@github.com # 应返回欢迎信息

手动运行调试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GIT_TRACE=1 GIT_SSH_COMMAND="ssh -v" ./sync_repo.sh

查看远程配置

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git remote -v
git branch -vv
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GitHub Actions 真香系列之自动同步镜像仓库
但也有一个问题,自动同步是个问题,Gitee 有提供一个同步按钮,但是需要人工去手动单击一次才能同步,很不方便。
沈唁
2020/12/25
3K0
从手动到自动:代码多平台同步的最终秘籍
在日常开发中,我习惯将代码存储在 Github 上。然而,由于网络访问的限制,时常会遇到无法访问的情况。为了确保其他用户能够顺利访问我的代码,我期望在向 Github 提交代码时,能够同步将代码推送到多个代码托管平台,如 Gitee、Gitlab、Bitbucket 等。
小码农薛尧
2025/02/19
2760
从手动到自动:代码多平台同步的最终秘籍
GitHub 代码实时同步 gitee 和 coding
GitHub 作为全世界最大的代码集中地,在上面,我们可以随意地下载或者参与各种著名开源项目和开源开发框架。
章鱼猫先生
2021/12/13
2.5K0
GitHub 代码实时同步 gitee 和 coding
shell脚本同步git多仓库
公司项目大多是定制项目,仓库是每个地区都拆分成了独立的,有需要更新时才会需要同步修改代码。为了方便管理,我们大都采取了两种管理模式:
薛定喵君
2023/04/24
7550
Linux超炫的 ZSH 配置
文章目录 oh-my-zsh 1 环境 1.1 Ubuntu准备 2 开始 3 其他 oh-my-zsh 1 环境 macOS Ubuntu 区别: macOS自带zsh, Ubuntu需要需要安装zsh 1.1 Ubuntu准备 Ubuntu安装zsh sudo apt-get update sudo apt install zsh 配置zsh chsh -s /bin/zsh 2 开始 安装oh-my-zsh 复制以下内容,运行; #!/bin/sh # # This script s
Autooooooo
2021/12/14
1.5K0
如何将 GitHub 仓库代码同步到 Gitee?
将GitHub仓库同步到Gitee(码云)是一个常见的需求,特别是在中国大陆地区,因为Gitee在国内访问速度较快,且与GitHub在某些方面有相似的功能。下面是将GitHub仓库同步到Gitee的步骤:
半夜喝可乐
2025/02/02
2970
如何将 GitHub 仓库代码同步到 Gitee?
git初入门(四):远程仓库操作
申请到了 Git 远程仓库的帐号并创建了一个空的远程仓库现在我们就可以结合本地的仓库与远程仓库一起协同工作了,模拟多人协同开发,这里我们全部使用命令完成。
传说之下的花儿
2023/09/17
5000
git初入门(四):远程仓库操作
使用Github Action自动同步仓库到Gitee
作为程序员出生的你,肯定知道备份的重要性。再说现在大环境背景下,美国的政治关系还是比较混乱的,而对于存放在Github上面的项目,也不再是技术自由的国度啦。所以说我们的代码还是有必要进行“双”备份的,接下来就是介绍下,如何使用Github上面的Action功能,将Github上面的代码同步备份到国内的Gitee仓库站点。
凡梦星尘
2024/11/20
2620
使用Github Action自动同步仓库到Gitee
Manjaro记录
原因在于本地数据库 core.db, extra.db, community.db 中的软件包信息已经与服务器上的不一致, 主要是软件包的版本不一致导致的. 一般不是服务器连接不上的原因. 执行下面的命令即可.
云深无际
2021/04/14
1.6K0
Manjaro记录
使用TravisCI做个人博客的自动构建
今天又有朋友问我,这个博客是怎么搭建的。在回答后,顺便重新申视了下博客的构建部署方式,发现还是有一些改进空间的,刚好今天有点时间,就把它优化一下。
jeremyxu
2019/03/15
1.1K0
利用GitHub 的Actions自动同步gitee仓库,并Gitee Pages 自动部署项目
GitHub 的Actions会处理.github下的工作流文件夹workflows。 只要在g项目根目录下创建 .github/workflows/ ,在这个文件夹里再创建Sync.yml文件,填入以下代码。 当产生push操作就会自动同步gitee
鳄鱼儿
2024/05/21
1390
git相关问题解析,你想要的都有🔥
本地同步默认分支最近n次的commit信息,克隆默认分支master最近一次commit
甜点cc
2022/12/21
1.4K0
git相关问题解析,你想要的都有🔥
入门级 – 码云(Gitee),GitHub 教程
这篇文章的目的是记录我的关于GitHub的内容,从注册、下载直到设置成功每一步都有解释,其中有一些截图或者代码来自于网络。
Yiiven
2022/12/15
1.4K0
入门级 – 码云(Gitee),GitHub 教程
Iterm2 Theme
在打开的finder窗口中,双击Solarized Dark.itermcolors和Solarized Light.itermcolors即可安装明暗两种配色
DriverZeng
2022/09/26
1.2K0
Iterm2 Theme
如何同步多个 git 远程仓库
以前源码是托管在 github 的, 现在想要同步托管在 gitee, 一做备份分发, 二方便国内下载使用(网速可观), 三防特色墙...
java思维导图
2019/07/19
1.5K0
Git入门学习到进阶3
但是在GitHub上,利用Git极其强大的克隆和分支功能,广大人民群众真正可以第一次自由参与各种开源项目了。
全栈工程师修炼指南
2022/09/28
5450
Git入门学习到进阶3
我的Linux
我的Linux 个人用Linux基础配置。随缘更新…… 1. Shell 使用zsh作为shell使用。 配置/安装 # 下载zsh apt-get install zsh # 切换zsh chsh -s /bin/zsh root # 查看shells cat /etc/shells # 安装oh my zsh 在线方式 # 安装oh-my-zsh # 方式一:curl sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/
堆栈哲学
2022/11/24
5950
万一 Github不让用了,Gitee同步指南请收好
大家好,我是秋风,最近很多开源项目让一个本该纯粹的地方混入了政治色彩。例如 Node 还有 React 这些超明星级的项目。
秋风的笔记
2022/03/29
1K0
万一 Github不让用了,Gitee同步指南请收好
github网站部署
如果你想记录生活、抒发情感、分享见解,这一切都离不开一个可以承载文字的平台,一个独立的、由自己掌控的平台,而 GitHub Pages 就是这么一个平台。
IT小马哥
2024/09/29
3990
github网站部署
MacBook 终端美化
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
suveng
2019/11/04
1.7K0
相关推荐
GitHub Actions 真香系列之自动同步镜像仓库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验