讲师中心 微信公众号
AI工具推荐 视频效率加速

Git迁移远程仓库并保留历史提交记录的步骤

陌墨同学_2224

陌墨同学_2224

发布时间:2026-10-21 07:42:30

|

446人浏览过

|

来源于php中文网

原创

能,git remote set-url origin <new-url>可直接更换远程地址,适用于本地仓库已完整包含所有历史、分支和标签的情况,是最轻量安全的迁移方式。

git迁移远程仓库并保留历史提交记录的步骤

git remote set-url origin 能不能直接换地址?

能,但只适用于你本地仓库已经完整包含所有历史、分支和标签的情况。这是最轻量的迁移方式,适合日常换平台(比如从 GitHub 换到 Gitee)、或公司内网 Git 服务器迁移。

关键前提是:git log 能看到全部提交,git branch -a 和 git tag 能列出所有分支与标签——否则换完地址也推不全。

  • 执行 git remote set-url origin <new-url>,替换远程地址
  • 确认无误后,用 git push --all origin 推送所有本地分支
  • 再补一句 git push --tags origin,把标签也带上(--all 不含 tags)
  • 如果目标仓库非空(比如已有 README),git push 会失败,报错类似 ! [rejected] master -> master (non-fast-forward)

git clone --mirror 是什么,什么时候必须用?

git clone --mirror 会克隆整个仓库的“元数据”:所有 refs(分支、标签、远程跟踪分支)、所有对象、所有 reflog —— 它生成的是一个裸仓库(bare repo),没有工作目录,专为镜像/迁移设计。

当你需要 100% 确保不丢任何东西(比如生产环境迁移、审计要求保留所有分支和标签),或者源仓库你只能访问一次(比如临时权限),就必须用它。

  • 克隆命令:git clone --mirror <old-url> repo.git(注意结尾的 .git)
  • 进目录:cd repo.git
  • 改远程:git remote set-url origin <new-url>
  • 镜像推送:git push --mirror origin(自动覆盖同名 refs,所以目标仓库必须为空)
  • --mirror 本质是 --refs --force 的组合,等价于手动推送所有 refs/*,但更安全、更少出错

目标仓库不是空的,推送失败怎么办?

常见错误是:在 GitHub/GitLab 上点 “New Repository” 时勾选了 “Initialize with README” 或 “.gitignore”,导致新仓库已存在一个初始 commit。此时 git push 会因非快进(non-fast-forward)被拒绝。

YiHui GIT MONITOR
YiHui GIT MONITOR

通用Git项目监控工具,支持GitHub、GitLab、Gitee等所有平台,自动检测、添加/删除仓库更新并生成变更摘要。

下载

解决办法不是强行 --force,而是让目标仓库真正变空:

  • 进入新仓库 Web 页面 → Settings → Danger Zone → “Delete this repository”(删掉重来)
  • 或者保留仓库但清空内容:用 git push origin --delete <branch-name> 删除默认分支(如 main),再 git push origin --delete <tag-name> 删掉初始 tag(如果有)
  • 验证是否清空:git ls-remote <new-url> 应该返回空;或者直接 curl <new-url>/info/refs 看响应是否为空
  • 切记:不要在已有内容的仓库上用 --mirror,否则会抹掉对方所有已有分支

迁移后本地开发怎么继续?

迁移完成 ≠ 开发就绪。很多人推完就以为结束了,结果下次 git pull 还连着旧地址,或者 git push 报错找不到远程分支。

你需要做三件事:

  • 确认本地当前分支已设置上游:git branch --set-upstream-to=origin/<branch> <branch>(例如 git branch --set-upstream-to=origin/main main)
  • 检查 .git/config 中 [remote "origin"] 的 url 是否已更新为新地址
  • 如果之前有其他 remote(如 upstream),记得清理或重命名,避免后续 git fetch upstream 还去连旧仓库

最容易被忽略的是:目标仓库的默认分支名可能和源仓库不同(比如源是 master,目标设成了 main)。git push -u origin main 成功后,别忘了在目标仓库 Web 设置里把 default branch 改成 main,否则别人 clone 下来会拿不到正确主干。

热门AI工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

6379

2023.07.05

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

1840

2023.07.06

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

1074

2023.07.24

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4157

2024.04.09

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3921

2024.04.09

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

60

2026.10.16

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

40

2026.10.16

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

40

2026.10.16

Revel框架模板渲染与表单验证
Revel框架模板渲染与表单验证

本专题围绕Revel框架视图层开发,介绍模板语法、变量输出、布局复用、表单提交、参数绑定与验证规则,帮助开发者完成安全规范的页面交互。

20

2026.10.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git版本控制工具
Git版本控制工具

共8课时 | 1.9万人学习

vscode手册
vscode手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn