1. git push --mirror
--mirror模式会把本地的分支都克隆
// 先用--bare克隆裸仓库 git clone git@gitee.com:zhangamie/testApp.git --bare // 进入testApp.git,这样就可以把所有分支都克隆到新仓库了 git push --mirror git@gitee.com:zhangamie/testApp2.git
或
// 普通模式克隆仓库 git clone git@gitee.com:zhangamie/testApp.git // push所有本地已存在的分支(不管是否有对应的远程分支) git push --mirror git@gitee.com:zhangamie/testApp2.git
2. 加远程源
git remote add origin2 git@gitee.com:zhangamie/testApp2.git
git push origin2
git checkout dev
git push origin2
...
这种方式的缺点是只能一次push一个分支,如果要克隆所有分支,需要checkout到各个分支然后push
3. git subtree
推荐阅读:git subtree操作
上面2种都是整个仓库的迁移,而git subtree可以把某个子目录拆出去
例如想把仓库的目录src/apps/testApp拆出去一个仓库,并且带上这个目录的所有提交历史记录
首先我们得创建一个空的仓库(记得别带任何初始化文件,例如README.md)
例如:git@github.com:xxxx/testApp.git master
然后到主仓库执行这段git命令,就可以到testApp看到代码啦
git subtree push --prefix=src/apps/testApp git@github.com:xxxx/testApp.git master