Git仓库迁移而不丢失log的方法
- 要求能保留原先的commit记录,应该如何迁移呢?
- 同时,本地已经clone了原仓库,要配置成新的仓库地址,该如何修改呢?
- 注意:如果使用了代码审核工具Gerrit,那么在进行操作之前需要将Gerrit关掉,等成功恢复后再将Gerrit开户即可
1、使用git push –mirror
先了解一些git的基本参数介绍
git clone –bare
1 | GIT-CLONE(1) Git Manual GIT-CLONE(1) |
git push –mirror
1 | --mirror |
1.1 建立新仓库
- 1). 从原地址克隆一份裸版本库,比如原本托管于 GitHub,或者是本地的私有仓库
1 | git clone --bare git://192.168.10.XX/git_repo/project_name.git |
- 2). 然后到新的 Git 服务器上创建一个新项目,比如 GitCafe,亦或是本地的私有仓库,如192.168.20.XX
1 | su - git |
1.2 上传代码到新仓库
- 1). 以镜像推送的方式上传代码到 GitCafe 服务器上。
请确保已经添加了公钥到新的机器上
1 | cd project_name.git |
- 2). 删除本地代码
1 | cd .. |
- 3). 到新服务器上找到 Clone 地址,直接Clone到本地就可以了。
1 | git clone git@192.168.20.XX/path/to/path/new_project_name.git |
这种方式可以保留原版本库中的所有内容。
1.3 使用脚本去自动上传
1 |
|
2、切换remote_url
先查看remote的名字
1 | git branch -r |
假设你的remote是origin,用git remote set_url 更换地址
1 | git remote set-url origin remote_git_address |
remote_git_address更换成你的新的仓库地址。
第二种切换remote_url的方法更直接,直接更改.git/conf配置文件里的ip地址就行。