最近又要把公司Stash上的项目在别部门一个私有仓库,平移到自己部门项目组的仓库,要求迁移的时候要保留已有的分支和以前的提交记录,类似的需求经常遇到,刚好做个记录。

1). 从原地址克隆一份裸版本库(纯仓库形式),比如原本托管于 GitHub。

git--bare

1
git clone --bare git://github.com/username/project.git

–bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。

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

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

1
2
cd project.git
git push --mirror git@stash.com/username/newproject.git

cd-push

– mirror 克隆出来的裸版本对上游版本库进行了注册,这样可以在裸版本库中使用git fetch命令和上游版本库进行持续同步。

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

git-clone

1
git clone git@Stash.com/username/newproject.git

通过这样的Git仓库迁移可以保留原版本库中的所有内容(tag,branch等记录)。