SVN與GIT的區別

Svn 集中式的版本控制
Svn版本控制系統是集中式的數據管理存在一箇中央版本庫,所有開發人員本地開發使用的代碼都來自於版本庫,提交代碼也都必須提交到這個中央版本庫。
Svn版本控制系統工作流程如下:
1.在中央庫上傳創建或從主幹複製一個分支;
2.從中央庫check out下這個分支的代碼;
3.增加自己的代碼文件,修改現在的代碼或刪除代碼文件;
4.commit代碼,假設有人在槓槓的分支上提交了代碼,你就會被提示代碼過期,你得先up(更新)你的代碼後再提交。up(更新)代碼的時候如果出現衝突,需要解決好衝突後在進行提交。
缺點:
當你無法連接到中央版本庫的環境下,你無法提交代碼,將代碼加入版本控制;
你無法查看代碼的歷史版本以及版本的變化過程。提交到版本控制系統中的diamante我們要默認通過自測可運行的,如果某個模塊的代碼比較複雜,不能短時間內實現爲可測試的功能,那麼你需要等很長時間才能提交自己的代碼由於代碼庫集中管理,因此,需要對中央版本庫的存儲做備份,這點分佈式的 版本控制系統要好一些。Svn的備份要備份所有代碼數據以及所有更改的版本記錄。


GIT 分佈式的版本控制
GIT是由Linux開發的,所以很自然的GIT和Linux文件系統結合的比較緊密。以至於在Windows上你必須使用cywin才能使其完美的工作。
1. GIT中沒有了中央版本庫的說法,但是爲了開發小組的代碼共享,我們通常會搭建一個遠程GIT倉庫;
2. 但是和Svn不同的是,開發者本地也含有一個完整的GIT倉庫,從某種角度上說本地倉庫和遠程的倉庫身份上是等價的,沒有主從之分。
3. 如果你的項目是閉源項目,或者你習慣於以往的集中式的管理模式的話那麼在GIT你也可以像Svn那樣的工作,只是流程可能要增加一些步驟:
1. 你本地創建一個GIT庫,並將其add到遠程GIT庫中;
2. 你在本地添加或者刪除文件,然後commit,當然commit操作都是提交到本地的GIT庫中了(GIT目錄下的objects目錄中);
3. 將本地GIT庫的分支push遠程GIT庫的分支,如果這時候遠程GIT庫中已經有別人push過,那麼遠程GIT將不允許你push,這時候你需要先pull,然後如果有衝突,處理好衝突,commit到本地GIT庫後,再push到遠程GIT庫。
通過上面描述我們可以看到,每個開發人員的本地都會有一個GIT庫,我們可以隨時進行comit而不需要互聯網,可以隨時查看歷史版本,當某一個功能點開發完了之後我們可將commit後的內容pash到遠程GIT庫了,如果遠程GIT庫的版本在你上次clone或者pull之後變化了,那麼你需要進行pull並處理衝突,提交之後,再push到遠程的GIT庫。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章