一、作用
把在 A 托管平台的倉庫完全的遷移到 B 托管平台,保留 commit 歷史記錄。
二、場景
將 Gitlab 上的倉庫遷移到 GitHub
將 Coding 上的倉庫遷移到 GitHub
將 Gitee 上的倉庫遷移到 GitHub
……
遷移前后,保留 commit 歷史記錄,即在遷移后的新倉庫中能查詢歷史提交信息,同時也能保留小綠點。
三、步驟
- 建立新倉庫
- 克隆舊倉庫
- 推送新倉庫
下面,以 Coding 遷移到 GitHub 為例。
A. Git Bash操作
1. 在 GitHub 建立新倉庫
在 GitHub 中新建一個同名項目(不同名也可以),不要添加 README.md,以及任何 License 和 .gitignore 文件,只需要新建一個空的倉庫。
只需要一個空的倉庫。
2. 克隆 Coding 上的項目
將 Coding 上想要遷移的項目完整克隆到本地。
本地執行
git clone https://git.coding.net/wenyuan/blog.git --bare
3. 將克隆下來的倉庫推送到GitHub
克隆完成后,將倉庫推送到 GitHub。
使用新倉庫頁面提供的倉庫地址(web URL),推送所有的分支和對象
cd blog.git git push https://github.com/wenyuan/blog.git --all
4. 完成后,再執行推送所有的Tags
git push https://github.com/wenyuan/blog.git --tags
這樣,整個倉庫就全部遷移到 GitHub 了,如果這些commit中的郵箱在GitHub配置中,可以看到小綠點也一起遷移過來了。
B. TortoiseGit 操作
這種簡單的操作我不是很喜歡用可視化工具,不過這里也介紹下怎么用「小烏龜」來完成倉庫的遷移。
1. 在 GitHub 建立新倉庫
同上,不贅述了。
2. 克隆 Coding 上的項目
同上,不贅述了。
3. 將克隆下來的倉庫推送到 GitHub
進入項目文件夾,鼠標右鍵 -> Git Sync…
點擊 Manage。
填寫 GitHub 遠程倉庫的信息,並 Add New/Save,應用,確認。
Remote URL 選則剛剛添加的 gitHub,然后 Push。
最后再提交 Tags.
四、git命令區別
上面在推送代碼至 GitHub(新倉庫)時,我們用到了下面這個命令:
git push https://github.com/wenyuan/blog.git --all
其實還有另外一個命令:
git push https://github.com/wenyuan/blog.git --mirror
關於這兩個命令的區別,可以參見Git push –all vs –mirror。
來源:文淵博客
