gitee仓库项目迁移到gitlab仓库

背景

之前一直使用gitee代码仓库提交代码,现在需要将gitee仓库中的代码迁移到gitlab中,并保留原有的提交记录。

前提

配置好了本地git,并本地与gitlab仓库已连接。

我这里使用 ssh方式拉去代码,因此需要配置ssh密钥

步骤

也可以直接使用gitee仓库中url地址直接导入整个仓库到gitlab中,
例如:http://gitee.com:xiaoming/test.git

1、将gitee上的仓库代码 git clone至本地

git clone  git@gitee.com:xiaoming/test.git

2、在gitlab 上创建空项目,并复制克隆地址

git@gitlab.com:xiaoming/project-test.git

注意:需要配置好gitlab与本地关联的ssh密钥

3、 cd至项目内部,查看git remote是否是origin

 git branch -r
 
#  origin/HEAD -> origin/main
# origin/main

4、是origin则直接修改origin的url,url为刚才复制的新建项目的url

这里也可以手动替换 url地址,具体位置:在项目 test\.git\config 文件中

命令方式替换:

在test项目目录下执行下方命令

git remote set-url origin git@gitlab.com:xiaoming/project-test.git

5、查看test项目是否已修改为新项目地址的url
在test项目目录下使用此命令查看:

cat .git\config

效果如下:

文件位置:test\.git\config

[core]
	repositoryformatversion = 0
	filemode = false
	bare = false
	logallrefupdates = true
	symlinks = false
	ignorecase = true
[remote "origin"]
#	   url = git@gitee.com:xiaoming/test.git   # 修改前的url
	url = git@gitlab.com:xiaoming/project-test.git   # 修改后的url
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
	remote = origin
	merge = refs/heads/main
[user]
	name = xiaominga # 用户名
	email = xiaoming@qq.com  # 邮箱

6、推送代码至新仓库

git push origin master

默认也可以使用git push

mater表示是master分支名的代码提交到project-test仓库

附件

参考:git 配置ssh秘钥教程
https://blog.csdn.net/weixin_44549646/article/details/127494340

<think>我们被要求将GitLab上的项目迁移Gitee,并且希望保留提交记录。根据引用[2]和引用[3]提供的方法,迁移的核心步骤是:1.将GitLab上的项目克隆到本地。2.在Gitee上创建一个新的空仓库。3.修改本地仓库的远程地址为Gitee仓库的地址。4.将本地仓库推送到Gitee。但是,引用[2]提供了从Gitee迁移GitLab的方法,而我们需要的是从GitLab迁移Gitee,原理相同,只是方向相反。引用[3]和引用[4]则提供了从GitLab迁移Gitee的方法,但步骤略有不同。综合以上引用,我们可以采用以下步骤:步骤1:从GitLab克隆项目到本地gitclone<GitLab项目的URL>步骤2:进入项目目录cd<项目目录>步骤3:在Gitee上创建空仓库(需要手动在Gitee上操作)步骤4:修改本地仓库的远程地址为Gitee仓库的URL有两种方式:a)删除原来的origin,然后添加新的origin(如引用[4]):gitremotermorigingitremoteaddorigin<Gitee仓库的URL>b)或者直接修改origin的URL(如引用[2]):gitremoteset-urlorigin<Gitee仓库的URL>步骤5:将本地仓库推送到Gitee通常使用:gitpush-uorigin--all(推送所有分支)以及:gitpushorigin--tags(推送所有标签)但是,引用[2]和[3]中只提到了推送master分支,如果需要所有分支,则需要推送所有分支。注意:如果项目有多个分支,需要确保所有分支都被推送。在克隆时,默认只克隆默认分支(通常是master或main)。如果要克隆所有分支,可以在克隆后执行:gitbranch-r|grep-v'\->'|whilereadbranch;dogitbranch--track"${branch#origin/}""$branch";done然后执行:gitfetch--all或者,在克隆时使用:gitclone--mirror<URL>这样可以克隆整个仓库(包括所有分支和标签),但这样会创建一个裸仓库。裸仓库需要转换为普通仓库或者直接推送到新的远程。另外,引用[3]和[4]提到,如果使用--mirror克隆,则可以使用以下命令推送:gitpush--mirror<Gitee仓库的URL>因此,有两种方法:方法一(普通方法,适用于一般情况):1.克隆项目(只克隆默认分支):gitclone<GitLab项目URL>2.进入项目目录3.在Gitee创建空仓库4.修改远程地址5.推送当前分支:gitpush-uoriginmaster(或main)6.推送其他分支:需要先切换到其他分支,然后分别推送(或者使用gitpushorigin--all)方法二(镜像方法,保留所有分支和标签,推荐):1.克隆整个仓库(包括所有分支和标签):gitclone--mirror<GitLab项目URL>2.进入项目目录(注意,这是一个裸仓库,没有工作目录)3.在Gitee创建空仓库4.修改远程地址(因为裸仓库只有一个远程origin,可以直接修改)gitremoteset-urlorigin<Gitee仓库URL>5.推送所有分支和标签:gitpush--mirror方法二更完整,可以保留所有分支、标签和提交记录。但是,方法二克隆的是裸仓库,如果需要继续在迁移后的仓库上工作,可以将裸仓库转换为普通仓库,或者重新克隆Gitee上的仓库。另外,如果项目较大,可能需要设置Git的postBuffer,以避免推送失败:gitconfighttp.postBuffer52428800根据上述分析,我们给出两种方法的详细步骤。由于用户要求从GitLab导出并导入到Gitee,我们推荐使用镜像方法(方法二)以保留所有信息。详细步骤:方法二(镜像方法)步骤:1.从GitLab克隆裸仓库gitclone--mirror<GitLab项目的URL>cd<项目目录>#注意,项目目录是.git结尾的,里面是仓库的所有内容2.在Gitee上创建一个新的空仓库(不要初始化,不要添加README、.gitignore等,保持空仓库)。3.修改本地裸仓库的远程地址为Gitee仓库的URL:gitremoteset-urlorigin<Gitee仓库的URL>4.将整个仓库(包括所有分支和标签)推送到Giteegitpush--mirror5.推送完成后,可以删除本地裸仓库。6.如果需要,在Gitee上检查项目,确保所有分支和标签都已迁移。方法一(普通方法)步骤:1.克隆GitLab项目(默认分支):gitclone<GitLab项目的URL>cd<项目目录>2.在Gitee上创建空仓库(同上)。3.修改远程地址:gitremoteset-urlorigin<Gitee仓库的URL>#或者先删除原来的origin,再添加新的#gitremotermorigin#gitremoteaddorigin<Gitee仓库的URL>4.推送所有分支(包括标签):gitpush--allorigin#推送所有分支gitpush--tagsorigin#推送所有标签注意:如果项目有多个分支,在克隆时可能只克隆了默认分支,其他分支需要单独拉取并推送。为了避免遗漏,推荐使用镜像方法。另外,引用[1]提到关于manifest导入的内容,但用户的问题不涉及manifest,因此我们不考虑。根据引用[2][3][4],我们给出的方法都是可行的。用户可以根据需要选择。由于用户没有特别说明项目的大小和分支情况,我们推荐使用镜像方法,因为它更全面。因此,回答如下:</think>### 从 GitLab 迁移项目Gitee(保留提交记录) #### 方法一:直接推送(推荐) ```bash # 1. 克隆 GitLab 项目(保留所有分支和标签) git clone --mirror <GitLab项目URL> cd <项目目录.git> # 进入克隆的裸仓库目录 # 2. 在 Gitee 创建空仓库(不要初始化 README/.gitignore) # 3. 修改远程地址为 Gitee 仓库 git remote set-url origin <Gitee仓库URL> # 4. 推送所有内容到 Gitee git push --mirror origin ``` #### 方法二:修改远程地址 ```bash # 1. 克隆 GitLab 项目(普通克隆) git clone <GitLab项目URL> cd <项目目录> # 2. 在 Gitee 创建空仓库 # 3. 修改远程地址 git remote set-url origin <Gitee仓库URL> # 4. 推送所有分支和标签 git push --all origin git push --tags origin ``` > **关键说明**: > 1. **保留提交记录**:两种方法均通过直接操作 Git 仓库实现历史记录保留[^2][^3] > 2. **分支处理**:`--mirror` 参数会同步所有分支和标签(推荐)[^2] > 3. **权限要求**:需在 GitLab项目读取权限,在 Gitee 有写入权限 > 4. **大项目注意**:超过 100MB 的文件需检查 Git LFS 配置 #### 迁移后验证: 1. 在 Gitee 仓库检查提交历史 2. 确认分支和标签是否完整 3. 测试新仓库的克隆功能: ```bash git clone <Gitee仓库URL> ``` > **避坑提示**: > - 若遇到 `remote: error: File is too large` 错误,需配置 Git LFS[^4] > - 迁移私有项目时,确保本地 Git 已登录目标平台账号 > - 组级迁移可使用脚本批量处理(需 API 权限)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

所遇所思

你的鼓励将是我的原动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值