svn 遷移至git操作手冊
項目交付、版本管理工具變更等情況下,遷移svn舊歷史記錄有很大必要,方便后續追蹤文件的提交歷史,文件修改記錄比對等。git自帶了從svn遷移至git的工具命令,可很好的對svn上的提交歷史做遷移和映射,操作簡單方便。但是初次接觸不熟練,這里做一個總結和記錄,內容盡量簡單化。爭取提供給剛剛接觸git和准備遷移的用戶一個簡單易懂的方案。
遷移流程圖:

這里分為兩步來說明,第一步是比較簡單遷移要件准備,已經准備好的用戶可直接略過,直接進入第二步進行遷移操作。
|第一步:准備工作:
① svn項目(SvnProject)地址及訪問此svn項目權限賬號:
地址:https://mytest.cn/svn/project/Example/ SvnProject /
賬號:test/test@123
② git新建一個倉庫(如:GitProject)存放遷移項目
遠程倉庫地址:https://192.165.22.33/migrate/GitProject
賬號/密碼: my_test/mytest@123
③ 待遷移svn項目有過提交記錄的用戶清單:
如果具備①的svn賬號又沒有svn管理員權限,可以通過導出所有提交歷史並用代碼提取一下用戶清單(開發人員都懂,不贅述)。獲取到的用戶清單為user1,user2,user3。創建文件users.txt,按如下格式存入svn賬號與git賬號的映射關系

“=”前為svn賬號,“=”號后為git賬號,尖括號為git用戶的郵箱,尖括號及郵箱可無。
注:如果有些用戶已經離職了,其賬號在git中沒有,這里依然可以映射至不存在的git用戶。
如果SVN用戶未全部列舉,執行遷移時會報如下錯誤:

報這個錯誤時可簡單粗暴刪除文件夾重新導出即可。
④ :電腦上安裝git客戶端,客戶端下載地址:
https://www.git-scm.com/download/
下載后安裝客戶端,安裝及配置參考:
https://blog.csdn.net/u013295518/article/details/78746007
|第二步:數據遷移
一:導出svn記錄到本地
在你存放users.txt的同級目錄新建一個文件,命名為你的項目名:GitProject

右鍵文件空白處,單擊Git Bash Here

在bash界面,輸入git拷貝命令:
git svn clone https://mytest.cn/svn/project/Example/MyProject/ --no-metadata --authors-file=users.txt GitProject

參數說明:
- git svn clone 是Git的遷移命令
- https://mytest.cn/svn/project/Example/MyProject/是svn服務器地址,注意需要到遷移項目的根目錄一級
- --no-metadata 參數去除了svn上很多雜亂的參數信息,保留了清晰簡潔的提交記錄信息。
- -file=users.txt 為你的用戶映射文件夾;
- GitProject是剛剛新建的空白項目名文件夾
第一次操作,會多次要求賬號密碼:請注意每次提示信息,第一次密碼輸入是操作系統的用戶密碼,第二次為svn賬號和密碼,第三次為git的賬號密碼。注意按提示輸入。
二:關聯git遠程倉庫
執行
cd GitProject
進入遷移項目路徑下:
執行:
git remote add origin git@192.165.22.33:migrate/GitProject.git
后即已關聯遠程git倉庫,執行可查看關聯情況
git remote –v
未關聯時:

關聯成功后:

如果關聯錯了,可以使用 git remote rm origin刪除錯位關聯后重新關聯即可
git remote rm origin
三:提交記錄至git
svn項目中的所有提交記錄和歷史版本都已經導出本地並關聯了遠程倉庫,現在只需要將這些記錄推送至遠程倉庫即可。
執行
git push -u origin master
命令輸入后需要輸入git賬號\密碼
執行成功后,就完成了整個遷移過程。登錄git網站,可以看到空白倉庫中多了很多提交記錄和文件。
引用資料:
github推送項目常見錯誤fatal: remote origin already exists
https://blog.csdn.net/dreamskyforjava/article/details/24322533
