迁移Git仓库
Git仓库迁移而不丢失log的方法
要求能保留原先的commit记录,应该如何迁移呢?
同时,本地已经clone了原仓库,要配置成新的仓库地址,该如何修改呢?
注意:如果使用了代码审核工具Gerrit,那么在进行操作之前需要将Gerrit关掉,等成功恢复后再将Gerrit开户即可
- 建立新仓库
- 从原地址克隆一份裸版本库,比如原本托管于 GitHub,或者是本地的私有仓库
git clone --bare git://192.168.10.XX/git_repo/project_name.git
- 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe,亦或是本地的私有仓库,如192.168.20.XX
su - git cd /path/to/path/ mkdir new_project_name.git git init --bare new_project_name.git
- 以镜像推送的方式上传代码到 GitCafe 服务器上。 请确保已经添加了公钥到新的机器上
cd project_name.git
git push --mirror git@192.168.20.XX/path/to/path/new_project_name.git
- 到新服务器上找到 Clone 地址,直接Clone到本地就可以了。
git clone git@192.168.20.XX/path/to/path/new_project_name.git
- 删除本地代码。
cd ..
rm -rf project_name.git
这种方式可以保留原版本库中的所有内容。 - 从原地址克隆一份裸版本库,比如原本托管于 GitHub,或者是本地的私有仓库
- 切换remote_url
- 查看remote的名字
git branch -r
- remote_git_address更换成你的新的仓库地址,
git remote set-url remote_origin_address remote_new_address
- 也可以直接更改.git/conf配置文件里的ip地址就行。
- 查看remote的名字
- windows下的操作命令备忘
git push --mirror root@47.52.172.211:/home/git/gitrepo/DevicePortal.git git.exe clone --progress -v "D:\DevicePortalUA" "D:\Repo\DevicePortalUA" git clone --bare "D:\DevicePortalUA" git clone --bare 350775.cicp.net:dp.git git clone --bare root@350775.cicp.net:dp.git 本地: 从原地址克隆一份裸版本库,比如原本托管于 GitHub,或者是本地的私有仓库 1,git clone --bare "D:\DevicePortalUA" "D:\Repo\dpua" 2,su - git cd D:\Repo mkdir DevicePortalUA.git git init --bare DevicePortalUA.git cd D:\\Repo\\dpua git push --mirror "D:\Repo\DevicePortalUA" 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe,亦或是本地的私有仓库,如192.168.20.XX 远程: cd /home/git/gitrepo tar zxvf DevicePortalUA.git.tar.gz git clone --bare 350775.cicp.net:dp.git git clone --bare root@350775.cicp.net:dp.git 1,git clone --bare "F:\Bank_Bridge" "D:\Bank_Bridge_bare" 2,git init --bare Bank_Bridge.git 3,cd bank_Bridge.bare 4,git push --mirror "D:\Bank_Bridge.git" 1,git clone --bare "F:\BankBridge" "D:\BankBridge_bare" 2,git init --bare BankBridge.git 3,cd bankBridge_bare 4,git push --mirror "D:\BankBridge.git" 1,git clone --bare "F:\StrivingNote" "D:\StrivingNote_bare" 2,git init --bare StrivingNote.git 3,cd StrivingNote_bare 4,git push --mirror "D:\StrivingNote.git"