当前位置: 首页 > news >正文

【git】git-transfer一行搞定仓库迁移

文章目录

    • 介绍
    • 使用场景
    • 可用命令
      • 单个迁移示例
      • 批量迁移
      • 自动创建gitea组织和仓库
    • 执行步骤
    • 新增特性
    • 支持的地址格式
    • 获取

介绍

这是一个go语言编写的命令行git迁移工具:git-transfer。
特点:

  • 快速迁移,保留完整branch和commits记录
  • 本地到远程批量迁移, 默认迁移本地分支。
  • 远程到远程批量迁移,默认迁移所有分支,并且本地clone备份。

使用场景

git仓库地址发生变化,origin地址需要换成新的,支持单个仓库迁移和批量迁移两种模式。

可用命令

  • git-transfer <新地址>- 单个仓库迁移,在项目目录下执行
  • git-transfer --yaml [配置文件]- 批量迁移(默认: transfer.yaml),任意路径执行
  • git-transfer --help- 显示帮助信息

单个迁移示例

git-transfer https://github.com/user/repo.git git-transfer git@github.com:user/repo.git

批量迁移

创建transfer.yaml配置文件:

projects:-name:"项目1"path:"./project1"old_origin:"https://old-server.com/user/project1.git"# 从old-origin克隆到本地path,然后推送new-originnew_origin:"https://github.com/user/project1.git"-name:"项目2"path:"./project2"new_origin:"https://github.com/user/project2.git"# 只写new_origin,从本地直接推送所有分支到new_origin

自动创建gitea组织和仓库

git-transfer --make-repo gitea --yaml z_hedong.yaml --username admin --password123456

然后执行批量迁移:

git-transfer --yaml my-config.yaml

执行步骤

  1. 环境检查

    • 检测本地是否安装git,无则输出"请配置git程序"
    • 检查当前目录是否为git仓库,无则输出"当前目录不是git仓库"
    • 验证新地址格式是否正确
  2. 备份当前配置

    • 获取并保存当前origin地址(用于出错时回滚)
    • 输出当前origin地址信息
  3. 更新远程地址

    • git remote remove origin- 删除现有的origin
    • git remote add origin 新地址- 添加新的origin地址
    • 验证新地址是否添加成功
  4. 推送代码

    • 先尝试git push --all推送所有分支
    • 如果推送失败,询问用户是否确认使用git push -f --all强制推送
    • 推送成功后输出确认信息
  5. 错误处理

    • 任何步骤失败时,尝试恢复原origin地址
    • 输出详细的错误信息和建议

新增特性

  • 命令行帮助---help显示所有可用命令和使用说明
  • 批量迁移---yaml支持从配置文件批量迁移多个项目
  • 实时进度条- 批量迁移时显示绿色进度条(第几个项目/总数)
  • 跨平台兼容- 兼容 cmd/powershell/bash/sh/zsh 等终端
  • 彩色输出- 使用颜色区分不同类型的信息
  • 详细日志- 每一步都有详细的日志输出
  • 安全回滚- 支持出错时自动回滚到原地址

支持的地址格式

  • http://github.com/user/repo.git
  • https://github.com/user/repo.git
  • git@github.com:user/repo.git
  • ssh://git@github.com/user/repo.git

获取

http://www.jsqmd.com/news/166509/

相关文章:

  • AI Agent开发到底怎么学
  • Miniconda-Python3.9与HTML前端交互的简单实现
  • 化工小伙转行运维,参与星火大模型项目,薪资从12K到19K*14薪的逆袭之路
  • 明星化妆师李瞻江为中国电影120周年进行妆造设计
  • 在 Ubuntu 18.04 上安装 VS Code
  • 利用Miniconda-Python3.9实现多项目Python环境隔离
  • 摄影构图以及前景运用
  • Linux下conda init命令执行失败的五种解决办法
  • python基于Vue共享单车自行车租赁报修信息系统 234if_django Flask pycharm项目
  • 电科金仓数据库KingbaseES V9R2C13元数据处理详解
  • 颠覆认知!AI Agent不只是助手,更是决策者!深度解析AI背后的“大脑”进化论
  • 基于Miniconda-Python3.9的轻量级AI开发环境推荐
  • 科研绘图 “内卷” 时代!虎贲等考 AI 凭 “学术规范 + 智能生成”,让数据可视化秒变高级
  • 基于单片机压电式超声波测距系统设计
  • Miniconda-Python3.9配置SFTP文件传输安全通道
  • 大语言模型(LLM)优化与应用:心景感知的RAG建模框架,全局语义表示的整合;时间预算下的LLM推理
  • Miniconda-Python3.9环境下使用Gradio快速展示模型
  • 三年的Java开发生涯:迷茫与选择
  • CentOS停更后的新选择:图文详解安装6.x内核openEuler+GNOME图形桌面
  • 基于STM32F1038T6单片机的汽车疲劳驾驶报警系统
  • 震惊!AI Agent记忆系统大揭秘:让你的AI拥有“过目不忘“的超能力,程序员必看!
  • 问卷设计 “业余 vs 专业” 差在哪?虎贲等考 AI:新手也能做出期刊级调研工具
  • 2025~2026年小型湿法纺丝机优质源头靠谱生产厂家,口碑品牌推荐 - 品牌推荐大师
  • PyTorch基础设施即代码:Miniconda-Python3.9环境声明式管理
  • java计算机毕业设计校园志愿者服务管理系统 高校公益时长智能管理平台 校园志愿活动撮合与反馈系统
  • 基于单片机的定时插座设计
  • 2025洛阳隐形车衣服务商TOP5权威推荐:深度测评隐形车衣施工注意事项 - 工业品牌热点
  • Miniconda-Python3.9支持多卡并行训练配置
  • 打开Docker DeskTop时报错“WSL needs updating Your version of Windows Subsystem for Linux (WSL) is too old.
  • 数据 “躺平” 变论据?虎贲等考 AI 解锁数据分析新姿势,小白也能秀专业