You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将本地Git仓库迁移到新远程仓库并保留指定提交历史

解决Git迁移历史提交报错的可行方案

方案1:创建仅包含指定提交范围的新仓库

步骤1:定位要保留的起始提交

找到问题提交之后的第一个正常提交,复制它的完整哈希值(记为<START_COMMIT>)。

步骤2:初始化新仓库

在本地新建一个空文件夹,打开终端进入后运行:

git init

步骤3:导入原仓库的指定提交历史

  • 把原本地仓库设为临时远程源:
    git remote add old-repo /你原仓库的绝对路径/
    
  • 拉取从<START_COMMIT>到原仓库main分支最新的所有提交,两种方式选一个:
    方式一(知道起始提交哈希):
    git fetch old-repo refs/heads/main:temp-branch
    git cherry-pick <START_COMMIT>..temp-branch
    
    方式二(知道起始提交的日期):
    git pull old-repo main --shallow-since="202X-XX-XX"
    
    要是cherry-pick过程中出现冲突,解决冲突后继续运行git cherry-pick --continue就行。

步骤4:关联新GitLab仓库并推送

  • 设置新的GitLab远程地址:
    git remote set-url origin <你的新GitLab仓库地址>
    
  • 推送本地main分支到远程:
    git push -u origin main
    

方案2:直接在原仓库截断历史(谨慎操作)

如果原仓库本地文件没问题,只是历史提交有损坏,可尝试截断问题提交之前的历史:

# 基于要保留的起始提交创建新分支
git checkout -b clean-main <START_COMMIT>
# 把原main分支重置到clean-main
git checkout main
git reset --hard clean-main
# 强制推送到新GitLab仓库
git push -uf origin main

注意:这个操作会改写原仓库的本地历史,执行前务必确保没有未提交的更改,最好先备份原仓库。


内容的提问来源于stack exchange,提问作者yow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 23:45:25