详解git仓库迁移的两种解决方案
Git仓库迁移而不丢失log的方法
要求能保留原先的commit记录,应该如何迁移呢?
同时,本地已经clone了原仓库,要配置成新的仓库地址,该如何修改呢?
注意:如果使用了代码审核工具Gerrit,那么在进行操作之前需要将Gerrit关掉,等成功恢复后再将Gerrit开户即可
1、使用gitpush--mirror
先了解一些git的基本参数介绍
gitclone--bare
GIT-CLONE(1)GitManualGIT-CLONE(1) NAME git-clone-Clonearepositoryintoanewdirectory SYNOPSIS gitclone[--template=] [-l][-s][--no-hardlinks][-q][-n][--bare][--mirror] [-o ][-b ][-u ][--reference ] [--depth ][--recursive][--] [ ] --bare MakeabareGITrepository.Thatis,insteadofcreating andplacingtheadministrativefiles in /.git,makethe itselfthe$GIT_DIR.Thisobviouslyimpliesthe-nbecausethere isnowheretocheckouttheworkingtree.Alsothebranchheadsattheremotearecopieddirectlyto correspondinglocalbranchheads,withoutmappingthemtorefs/remotes/origin/.Whenthisoptionisused, neitherremote-trackingbranchesnortherelatedconfigurationvariablesarecreated. gitpush--mirror --mirror Insteadofnamingeachreftopush,specifiesthatallrefsunderrefs/(whichincludesbutisnotlimited torefs/heads/,refs/remotes/,andrefs/tags/)bemirroredtotheremoterepository.Newlycreatedlocal refswillbepushedtotheremoteend,locallyupdatedrefswillbeforceupdatedontheremoteend,and deletedrefswillberemovedfromtheremoteend.Thisisthedefaultiftheconfigurationoption remote. .mirrorisset.
1、建立新仓库
1).从原地址克隆一份裸版本库,比如原本托管于GitHub,或者是本地的私有仓库
gitclone--baregit://192.168.10.XX/git_repo/project_name.git
2).然后到新的Git服务器上创建一个新项目,比如GitCafe,亦或是本地的私有仓库,如192.168.20.XX
su-git cd/path/to/path/ mkdirnew_project_name.git gitinit--barenew_project_name.git
3).以镜像推送的方式上传代码到GitCafe服务器上。
请确保已经添加了公钥到新的机器上
cdproject_name.git gitpush--mirrorgit@192.168.20.XX/path/to/path/new_project_name.git
4).删除本地代码
cd.. rm-rfproject_name.git
5).到新服务器上找到Clone地址,直接Clone到本地就可以了。
gitclonegit@192.168.20.XX/path/to/path/new_project_name.git
这种方式可以保留原版本库中的所有内容。
2、切换remote_url
先查看remote的名字
gitbranch-r
假设你的remote是origin,用gitremoteset_url更换地址
gitremoteset-urloriginremote_git_address
remote_git_address更换成你的新的仓库地址。
第二种切换remote_url的方法更直接,直接更改.git/conf配置文件里的ip地址就行。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。