logo@2x

1). 从原地址克隆一份裸版本库,原本托管于oschina。

git clone --bare git://github.com/username/project.git (1)
1--bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。

2). 然后到新的 Git 服务器上创建一个新项目,比如commons。

mkdir commons.git
cd commons.git
git init --bare

上边的命令表示创建名为commons的版本库,并初始化为空版本库(注意--bare参数)。

3). 以镜像推送的方式上传代码到新的git服务器上。

git push --mirror git@<你的serverIp>:commons.git (1)
1--mirror 克隆出来的裸版本对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步。

例如:

$ git push --mirror git@192.168.0.106:/data/code/commons.git
Counting objects: 100, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (54/54), done.
Writing objects: 100% (100/100), 44.88 KiB | 0 bytes/s, done.
Total 100 (delta 13), reused 100 (delta 13)
To 192.168.0.106:/data/code/commons.git
 * [new branch]      master -> master

4). 删除本地代码

cd ..
rm -rf project.git

5). 到新服务器commons上找到 Clone 地址,直接 Clone 到本地就可以了。

git clone git@:comons.git

这种方式可以保留原版本库中的所有内容。


相关阅读