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
