1. 程式人生 > >版本控制:SVN和GIT的一些使用感受(續)

版本控制:SVN和GIT的一些使用感受(續)

背景:

        緊接上文,從本地獨立開發者角度出發,繼續對從SVN集中式版本管理轉向GIT分散式版本管理的細節進行介紹。此次以自己具體的開發例項為基礎,給出GIT管理從整體專案SVN伺服器檢出來的本地工作副本的詳細過程。

GIT與SVN的結合:

        為了演示方便,利用TortoiseSVN在本地建立一個單機版的SVN版本管理器服務端的版本庫,如下圖所示:

image image

        如上圖,CPPLearning和CSharpLearning兩個標有SVN標誌的資料夾就是我在本地建立的兩個版本庫(repository),單擊進入就可以看到上一篇文章中提到的SVN服務端檔案系統的幾個主要目錄,conf、db、hooks和locks,此處用他們來模擬我們團隊開發過程中庫的整體專案版本控制的服務端,即下圖中的SVN服務端

image

        前面也提到過,有了SVN服務端,我們還需要在本機(這裡的模擬過程可以看做是找一個與版本庫CPPLearning、CSharpLearning位置不同的目錄即可)Checkout出自己的開發工作副本。

image

        到此SVN的使命算是告一段落了,他連線了我們與開發團隊其他成員的工作。下面就是我們重點要介紹的利用Git來協助SVN進行本地工作副本修改操作的記錄。

        第一步,右鍵單擊LocalSVNCS工作副本資料夾,選擇Git Init Here,此時雙擊進入工作副本目錄,可以看到多出了.git資料夾——這就是Git的本地針對於LocalSVNCS工作副本的版本庫。此時可以看到.git資料夾的小圖示是一個問號,這在SVN下的意思就是,還未進行版本控制(SVN各圖示的含義見下圖右)。

image image

        第二步,.git是GIT版本控制器的版本庫,這個我們其實並不希望最後提交到團隊的SVN伺服器中,因此需要將.git資料夾繼續忽略處理,在SVN中有多種方法忽略指定型別的資料夾或檔案,這裡就不介紹了,直接單擊右鍵如上圖左所示即可。

        第三步,在.git版本庫中右鍵,開啟Git GUI,可以看到眾多等待版本管理的資料夾及檔案。

image

        從上圖可以看出,SVN的本地版本庫.svn也被GIT檢測到了,嘗試著點選“快取改動”發現竟然有241個檔案。其實.svn根本不需要我們進行版本控制,因為在本地我們利用GIT的目的是記錄不曾向SVN提交的本地的各項修改操作,自然我們沒必要讓GIT記錄.svn的修改。所以利用.gitignore來設定檔案過濾,讓GIT忽略.svn資料夾,以及我們專案開發過程中的中間檔案。

image

【注意】:按照網路上眾多網友的建議,在本目錄、專案目錄、.git/info/exclude等都進行過多次設定嘗試,但是在Git Bash下輸入git status依然並未忽略.svn目錄。最後在(http://blog.csdn.net/benkaoya/article/details/7932370)中找到了答案,因為我用的是Windows系統,而Windows系統是不允許.gitignore檔名存在的,因為這樣設定會出現下圖中“必須鍵入檔名”的錯誤。所以按照博文中作者的提示,進入到Git Bash狀態,輸入vi .gitignore,然後輸入我們要忽略的資料夾及檔案,(對於VI工具的使用,大家可自行查閱資料)。隨後在版本庫根目錄下就自動生成了.gitignore的檔案,雖然也是文字檔案。但是此時Windows系統允許其存在。隨後呼叫git status,可以看到.svn已經被成功忽略,開啟Git GUI提交也就變成了我們上圖中的53個檔案啦。

image

        至此,我們就成功完成了GIT和SVN的配置,隨後就是可以隨意使用GIT來記錄我們本地的修改操作啦。當需要更新的時候可以賺到SVN,將本地修改同步到伺服器端。下面給出我在本地Git的修改記錄,

image

參考資料:

GIT可以隨意輕鬆的建立分支,具體的介紹可參照博文