天天看點

版本控制器GIT、SVN初接觸

最開始接觸的是SVN,學前端和PHP的時候,寫網站部署到新浪雲。雲上伺服器,本地用戶端。後來看到很多聊分布式版本管理工具Git的,就去看了看别人的部落格,

有一篇zssure的部落格,原址 版本控制:SVN和GIT的一些使用感受

版本控制器GIT、SVN初接觸

>我隻是個搬運工,搬過來友善自己日後的檢視,部落客寫的挺清楚的<

1.SVN

SVN版本管理的基本流程,服務端儲存的是你每次對工程進行的修改,當然第一次送出時記錄的就是你的初始工程檔案。那麼從上圖SVN服務端的目錄結構中我們并未直接看到我們送出的工程檔案,而利用TortoiseSVN (本地伺服器)和VisualSVN(遠端伺服器)的Repo-browse卻可以看到我們具體的項目檔案,如下圖。那麼我們送出的檔案又存到哪裡了呢?直覺猜測的話應該是db目錄下的某些檔案,因為随着送出次數的增加,該檔案的大小也在變化。搜尋一下相關資料,找到了如下的回答:

“svn有兩種存儲方式:BDB和FSFS,目前用的最多的是FSFS方式,這種方式的話,一般是存儲在\db\revs檔案夾下,裡面有一堆以版本号命名的檔案,如:0、1、2、3、4……,那個就是我們的工程檔案。svn先把0版本的狀态壓縮成1個檔案,然後每次版本更新時就針對變動的部分做一個壓縮檔案,每次都是增加一個增量包,最後在伺服器上能看到檔案名為從0開始到最終版本的一系列檔案”

“SVN伺服器端不是簡單将上傳的檔案一個一個存放起來的,SVN伺服器端預設采用的FSFS格式是将每次commit的内容增量方式存放的,每個增量包存成1個檔案,這個增量包中包括了這次commit的全部資料。也就是說你不可能在伺服器端存放該版本庫的檔案夾下找到你上傳的某個檔案”。

至此我們就明白了SVN服務端的結構。至于用戶端就沒什麼難的了。就是通過網絡協定将服務端的版本庫下載下傳到本地,存儲在.svn目錄下,除此以外的就是自己的工程檔案了(如果你是從遠端SVN伺服器下載下傳的别人的工程,那麼就是别人的工程檔案)。.svn中記錄的是你從SVN伺服器下載下傳時刻時伺服器工程檔案的狀态,再下一次送出時刻,會與SVN伺服器通訊來檢視伺服器和你本地兩端的修改狀況。

由此我們可以看出要想對本地的修改進行記錄,必須要與SVN伺服器進行通訊,無法隻是單純的儲存本地的修改。這也是我尋求Git的主要目的。百度百科對Git的描述是:“Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。分布式和集中式的最大差別在于開發者可以本地送出。每個開發者機器上都有一個伺服器的資料庫。”——反正就是一句話,Git可以完成上述我想要的本地修改記錄。

2)Git管理本地代碼修改

第一步,Git的版本庫和工作副本在同一目錄下,叫做.git。安裝完Git後,可以直接在任意目錄下單擊右鍵,選擇Git Init Here,建立Git版本庫,即.git檔案夾。(謹記:這是我們在本地建立的版本庫,壓根兒沒有伺服器毛關系啊,^_^。)

第二步,直接将我們需要管理的本地工程拷貝到.git同目錄下。随後我們想正常開發一樣打開工程進行操作即可,直到我想儲存一下修改狀态時,我們就可以轉到第三步。

第三步,在工程檔案夾中右鍵,選擇Git Gui,會彈出管理視窗,這裡會顯示我們所做的修改,在紅色框中列出的是我們做過修改的檔案,橙色框中可以看到所做的修改。綠色框中顯示的是修改的緩沖區,通過在紅色框中選擇指定檔案進入到綠色的緩沖區後,我們可以單擊黃色按鈕“送出”,至此本次我們對本地檔案的修改記錄就已經送出了。

第四步,在工程檔案夾右鍵,選擇Git History,我們既可以看到本地的此次修改記錄。

至此我們就很容易的實作了對本地代碼修改的記錄,而這整個過程中,根本沒出現伺服器。這是與SVN最大的差別。

部落客的第二篇相關博文GIT與SVN的結合

部落客在博文中也有其他部落客的連接配接位址,進行了更加詳細的講解。

3.詳解coding.net,上git部署代碼

Coding.net代碼托管空間申請與使用-安裝并運作WordPress