帶着歷史提交記錄遷移git倉庫


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM