當我發現我很感興趣的項目都被其作者託管在Github的時候,讓我萌生了對Git的好奇。雖然我已是如此的奧特曼,但是還是有必要寫出來分享給其他還未接觸 Git 的人的。之前我有介紹過《在Google Code上用 Mercurial 取代 Subversion 管理你的項目》,其實就是教大家如何把 SVN 轉換到 Mercurial 且保留全部的歷史記錄。本文講的則是另外一則,是教大家如何轉換 SVN 到 Git,網上其實有不少的教程,但是都沒有從 SVN 的 tags 到 Git 的 tags,本文提供了另外一則轉換的指南,如果有不妥的地方,望請 Git 高手指教並指正。
1.安裝 Git
首先,你需要安裝帶有 git-svn 的 Git(git-svn 可以讓你 SVN 和 Git並用,如果你打算使用 Git 又不想轉變你的 SVN版本庫,這會是一種很好的解決方案,不過本文只是利用git-svn來一次性轉換你的 SVN版本庫 為 Git。)
你可以在這裡下載安裝Git:http://git-scm.com/download。最新版似乎都有集成git-svn,至少我安裝完以上地址提供的編譯好的版本,在 Terminal 里輸入 git svn會有提示”Not a git repository”。
如果你正在使用MAC OS X,你應該已經用過 MacPorts了吧,那麼:
prompt> sudo port install git-core +svn |
Ubuntu 或者 Debian Linux用戶:
prompt> sudo apt-get install git-svn |
2.創建作者文件
下一步,創建一個文本文件來映射 Subversion 的提交者到 Git 的作者使歷史記錄里的名字和email地址正確顯示。保存成authors.txt:
guaniu = Leeiio <xxx@xxx.com> |
3.克隆(clone)版本庫
現在來運行命令導入你的svn版本庫為一個本地的Git版本庫。
我假定你的 svn 版本庫有標準的 /trunk,/tags 以及/branches。
prompt> git svn clone <SVN版本庫地址> --no-metadata -A authors.txt -t tags -b branches -T trunk <轉換的目的目錄名> |
比如以我的google code上的svn為例:
prompt> git svn clone http://leeiio.googlecode.com/svn/ --no-metadata -A authors.txt -t tags -b branches -T trunk Leeiio |
現在,你可以運行 git log 命令,你將會看到你全部的提交歷史記錄以及正確顯示的提交者作者名。
4.轉換branches 為 tags
現在還需要做一步處理。目前你全部的 tags 在 Git 的版本庫里都成了 branches(分支),並不是 tags。所以你需要手動轉換它們。對於每一個 svn 的 tag你都將轉換為 Git 的 tag,然後刪除全部的 branch。用以下的命令列出:
promp> git branch -r |
然後列出所有的tag:
prompt> git tag tagname tags/tagname prompt> git branch -r -d tags/tagname |
現在,你就有了一個本地的 Git 版本庫了,包含了所有的歷史記錄以及 tags。
5.Push(推送)到一個公共的版本庫
當然如果你並不想在網上分享你的 Git 版本庫,這一步的操作你大可不必了。
以 github 為例:
prompt> git remote add origin git@github.com:userid/project.git prompt> git push origin master --tags |
Well Done!一切搞定了。開始你的 Git 之旅吧。
最後,附送一個為 SVN用戶過渡到Git的使用手冊。
做第一個火星人?
❗ 哈哈,那額就是第二個火星人啦!
沒有用過git,用過一下svn
唔,這個太專業了看不懂
小李子..挺上進的麽. 😈
@inly 看傻眼了吧
你研究還挺多的,看不懂
@chisdy 一專多長么
呃~我簡單用用Subversion即可,所以這個就看不懂了了
還是 mercurial 好,主要是 google code 免費,github 要錢 😈
git 可以自己搭建私人伺服器的吧?
文章不錯,有機會也換過去試試看
無意間走進小站,很漂亮 !
guaniu = Leeiio
這個是什麼含義?
作者名稱映射啊
Pingback: 轉換你的 Subversion 到 Git - IT牛人博客聚合
Pingback: NeWorldiOS自動構建套件 – flow.ci + fir.im + Coding | | NeWorld