如何迁移一个Git仓库
浏览:1559次 出处信息
最近要把 Git 仓库迁移,看有些同学迁移中不太顺利,自己研究总结了下,分享给大家,本文将向大家介绍迁移 Git 仓库的的方法
直接PUSH
有同学说,这不是很简答么,像下面这样不就好了?
$ git remote add remote2 xxx$ git push --all remote2 上面做法的问题在于只能把本地存在的分支推送到remote2,一般公共仓库的话,我们本地都不会有全部远端分支的引用
那怎么办?别急,这事其实还不太简单,下面先来研究下push命令,平时推送分支,我们都是直接 push
$ git push其实 git 在 push 时会自动填充填充缺省参数,比如上面的命令完整命令应该是下面这样
$ git push origin branch # 自动填充源 origin 以及当前分支 branchgit在push时除了自动填充参数,还会自动展开分支,上面的命令展开后如下
$ git push origin refs/heads/branch:refs/heads/branch查看下.git下的refs目录,就会发现git会把远端的分支存放在remotes目录
.git/refs/remotes/origin/xxx那我们可以用下面的命令进行仓库迁移
$ git push remote2 refs/remotes/origin/*:refs/heads/*但这样做还有个问题不能解决,就是tag引用还是丢失了,下面介绍的方法可以解决这个问题
裸仓库
git有一个裸仓库的概念,只要在克隆时建一个-bare参数即可
$ git clone --bare xxx裸仓库是没有工作目录的,克隆完的仓库只有.git下的内容,同时也不能再做更新工作
但裸仓库可以再次push到另一个源,刚好可以完成我们仓库迁移的任务
$ git remote add remote2 xxx$ git push --mirror remote2镜像仓库
镜像仓库和裸仓库类似,但裸仓库不能更新,镜像仓库可以实现后续的更新工作
镜像仓库的创建只需要在克隆的时候加上-mirror参数即可
$ git clone --mirror xxx镜像仓库的push操作和裸仓库一样,也可以完成我们仓库迁移的任务
$ git remote add remote2 xxx$ git push --mirror remote2总结
本文总结了git迁移仓库的不同方法和区别,迁移源的问题,推荐大家使用裸仓库的方法,希望同学们遇到问题可以多思考多总结
参考资料
建议继续学习:
- Git常用命令备忘 (阅读:54079)
- Git log diff config高级进阶 (阅读:24435)
- Git subtree 要不要使用 –squash 参数 (阅读:22982)
- 我的git笔记 (阅读:19652)
- Zend Studio集成Git使用 (阅读:8597)
- Git commit 注释格式 (阅读:6426)
- GIT和SVN之间的五个基本区别 (阅读:5448)
- Git安装使用手记 (阅读:4605)
- 为何改用Git (阅读:4564)
- 用git部署php站点 (阅读:4338)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:树莓派 Raspbian 家长控制
后一篇:实现 go 的 goroutine 本地存储又一种方式 >>
文章信息
- 作者:颜海镜 来源: 颜海镜
- 标签: git 仓库
- 发布时间:2021-04-26 07:49:50
建议继续学习
近3天十大热文
-
[939] WordPress插件开发 -- 在插件使用 -
[117] 解决 nginx 反向代理网页首尾出现神秘字 -
[50] 如何保证一个程序在单台服务器上只有唯一实例( -
[48] 整理了一份招PHP高级工程师的面试题 -
[48] 用 Jquery 模拟 select -
[48] 海量小文件存储 -
[47] ps 命令常见用法 -
[47] Innodb分表太多或者表分区太多,会导致内 -
[46] 全站换域名时利用nginx和javascri -
[45] find命令的一点注意事项
