將本地git項目添加到遠程svn中
- git svn [svnprojpath]
- svnprojpath為原創svn項目路徑 —— 文件夾路徑,你要放到哪個文件夾
- 官方文檔中帶有-s參數,但我這邊加了會有問題,可能是非標准的問題。
- git svn fetch
- 此處可能會提示錯誤警告 —— 忽略,它只是在檢測一些歷史,不影響
- git branch -a 看一下分支 —— 單純看看
- git svn dcommit
- 問題1:本地還有未提交的更改 —— git commit 提交下
- 問題2:head歷史沒有上游svn信息 —— 為其添加父級信息
- git show-ref —— 記錄下remote/git-svn的commit值,其實是遠程項目分支的最后一次commit值[parentcommit]
- git log --pretty=oneline master —— 記錄下第一次commit值[localfirstcommit]
- git replace --graft [localfirstcommit] [parentcommit] —— 設置父級commit【以前是用.git/info/grafts文件,不過git后期版本會刪除這個處理】
- 問題3:本地修改刪除的文件夾,svn上會保留空文件夾 —— 添加選項設置--rmdir
- 實在沒辦法刪除空文件夾,可以在svn服務上刪掉后,本地git svn rebase。
- 需要原來文件夾中存在內容,然后刪除內部文件及文件夾時,--rmdir才會生效,以前的空文件夾時不會自動刪除 —— 這個可能也是為了保證svn可以添加空文件夾。
- .gitignore處理
- git svn show-ignore > ./git/info/exclude —— 這個好像是針對有svn忽略處理的情況,我們可以忽略這一步
- 將本地.gitignore文件里的內容添加到./git/info/exclude中 —— 具體配置內容可以網絡上,或者如我一樣直接使用visual studio自動生成的配置內容
- 刪除本地的.gitignore文件 ——這樣避免svn項目中含有.gitignore文件
- git svn rebase
- 拉取最新項目
- 建議每次commit之前拉取最新內容
用git管理遠程svn倉庫
- git svn clone [svnprojpath]
- [svnprojpath]為項目遠程路徑
- 之后的操作同上,注意處理.gitignore文件
參考:
行:奇葩史