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

Git仓库迁移到远程仓库(源码、分支、提交)

单个迁移仓库

一、迁移仓库 

1.准备工作
> 手动在电脑创建一个临时文件夹,CMD进入该目录
> 远程仓库上创建一个同名的空仓库

2.CMD命令:拉取旧Git仓库(包含提交、分支、源码)

$ git clone --bare http://git.domain.cn/path/app.git

3.CMD命令:进入本地仓库目录

$ cd app.git

4.CMD命令:推送仓库到新远程仓库(包含提交、分支、源码)

$ git push --mirror https://gitee.com/path/app.git
$ cd ..
二、更改本地项目的仓库地址

1、CMD进入本地项目文件夹(不是刚才拉取的仓库目录,是项目文件夹,如果没有,则直接从新仓库克隆项目源码到本地即可

2、CMD命令:更改为新的仓库地址

$ git remote set-url origin https://gitee.com/path/app.git

以上是单个仓库的命令,如需迁移多个项目,可以参考下面的批量命令。

批量迁移仓库

一、Windows批量迁移Git仓库脚本(源码、分支、提交).bat

使用场景:旧仓库迁移到新仓库,支持所有远程Git仓库。首次运行会弹窗要求输入Git账号密码。

使用方法:把此bat和remotes-all.txt文件放在一个空文件夹里双击运行。

@echo off

@REM 旧的仓库地址
set remote_old=http://git.domanin.cn/git-path
@REM 新的仓库地址
set remote_new=http://gitee.com/git-path
@REM 仓库名称列表:手动创建一个remotes-all.txt文件,多个仓库用换行隔开
set input_file=remotes-all.txt
 
SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ %input_file%"`) do (
    call :process %%a
)
goto :eof
 
:process
SETLOCAL EnableDelayedExpansion
set "repo=!%1!"
set "repo=!repo:*:=!"
echo !repo!
git clone --bare "%remote_old%/!repo!.git"
cd "!repo!.git"
git push --mirror "%remote_new%/!repo!.git"
cd ..
@REM rmdir "!repo!.git"
ENDLOCAL
goto :eof
二、Windows批量切换Git本地仓库地址脚本.bat

使用场景:本地已有源码,不想重新克隆,直接改源码的仓库地址。

使用方法:把此bat和remotes-all.txt文件放在源码的上一级目录双击运行。

@echo off

@REM 新的仓库地址
set remote_new=http://gitee.com/git-path
@REM 仓库名称列表:手动创建一个remotes-all.txt文件,多个仓库用换行隔开
set input_file=remotes-all.txt

SETLOCAL DisableDelayedExpansion
FOR /F "usebackq delims=" %%a in (`"findstr /n ^^ %input_file%"`) do (
    call :process %%a
)
goto :eof

:process
SETLOCAL EnableDelayedExpansion
set "repo=!%1!"
set "repo=!repo:*:=!"

REM Check if the directory exists
if not exist "!repo!" (
    echo Directory "!repo!" does not exist. Skipping...
    goto :eof
)

echo !repo!
cd "!repo!"
git remote set-url origin "%remote_new%/!repo!.git"
cd ..
ENDLOCAL
goto :eof

参考了以下博主的文章,有需要的小伙伴可以,戳↓

流浪_彩虹:git仓库完整迁移的各种方法(代码,分支,提交记录)_git仓库迁移-CSDN博客


http://www.kler.cn/a/414944.html

相关文章:

  • GitLab历史演进
  • vs 项目属性表
  • Spring Boot【三】
  • 第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024)
  • python画图plt.close()一直闪烁
  • 使用argo workflow 实现springboot 项目的CI、CD
  • CVE-2022-24124
  • OGRE 3D----3. OGRE绘制自定义模型
  • Centos 使用宝塔安装mysql详细步骤
  • 【第十一课】Rust并发编程(二)
  • Linux(ubuntu)系统的一些基本操作和命令(持续更新)
  • 平安科技大数据面试题及参考答案
  • React前端面试题详解(一)
  • 泷羽sec---shell作业
  • JVM系列之OOM实战
  • 【论文阅读】Federated learning backdoor attack detection with persistence diagram
  • idea新建springboot web项目
  • YOLOv8-ultralytics-8.2.103部分代码阅读笔记-autobatch.py
  • 【UE5 C++课程系列笔记】05——组件和碰撞
  • Ubuntu nvidia-cuda-toolkit 升级
  • Chrome://常用的内部页面地址
  • java回文数
  • MySQL 启动失败问题分析与解决方案:`mysqld.service failed to run ‘start-pre‘ task`
  • 在 Ubuntu 18.04 上安装 MySQL 5.7和MySQL 8
  • 【网络安全 | 漏洞挖掘】绕过SAML认证获得管理员面板访问权限
  • Python知识分享第九天补充