版本控制 SVN和GIT的一些使用感受

2021-07-05 06:24:39 字數 2635 閱讀 9504

原本在學校跟隨導師做專案的時候,就一直在使用版本管理,主要是用來記錄專案的修改,專案成員之間的溝通和交流。使用的服務端是visual svn,客戶端是tortoisesvn,常用的tortoisesvn指令也僅限於svn update和svn commit,前者用來從伺服器更新,以期望檢視其他同學的修改,後者用來將自己的修改提交到伺服器,使得團隊共享修改。由於專案組中的成員比較少,主要的**修改也只有我一人完成,因此tortoisesvn也就淪為了記錄我修改本地**過程的工具。其實這與我平時寫工作日誌(word格式)、**中新增注釋(注釋中一般會出現修改原因、修改者、修改時間、備註)的習慣有一些冗餘。

隨後進入職場,接觸的專案越來越大、開發者越來越多,就慢慢開始了解tortoisesvn的其它功能。例如檢視檔案修改日誌show log、回滾已提交的修改操作revert、建立分支branch/tag、建立補丁create patch等。在逐漸熟悉和使用的情況下,逐漸感覺到tortoisesvn似乎還缺少一點什麼功能?比如下述場景就經常發生:我從專案svn伺服器拷貝自己負責的**到我的本本,然後按照專案計畫開始修改自己的模組(此時就像在本地開發除錯一樣),但是突然臨時接到上級指示,有乙個緊急的bug要處理。此時我只能先建立補丁檔案(create patch),然後將目前的修改回滾到初始狀態(即我從svn伺服器拷貝時的版本),如是我才能開始修改緊急的bug。等待修補完成後,再將先前的patch檔案應用回來。這裡面我會同時做好相應的工作記錄(word文件),這裡面就會記錄我初始修改模組時的相關步驟和細節,記錄bug修補的過程,然後接著記錄模組的修改。如此,結合tortoisesvn的提交日誌和我的word工作文件,我才能精確的定位我開發過程中的任意時刻——方便後續思路的整理和延續,如下圖所示:如果每次tortoisesvn提交的時間粒度是按照黃色箭頭所示,那麼中間的紅色修改我只能在我的word工作日誌中檢視,但是word中畢竟記錄的是思路,具體的**檔案我只能手動拷貝到word日誌中記錄的相應位置,或者建立patch檔案儲存到制定位置,如果tortoisesvn提交的時間粒度是途中箭頭所示,那麼這與word日誌的工作幾乎重複,可以達到隨意定位修改的目的,但是需要注意的是,在團隊開發中,如此頻繁的tortoisesvn提交時絕對不可能的,一是svn伺服器要求完整的功能修改完成後才能提交,而是如此頻繁的提交會增加伺服器負擔,也會使得自己不完整的**模組影響整個專案的功能。

看到這裡,你是不是覺得好複雜,好麻煩,但是對於碼農來說,良好的記錄和注釋是必須的,這樣你才能更好的對自己的**負責。這種開發狀態我已經堅持了多年,也習以為常了,直到某一天我接觸了git後,我才恍然發現,原來還有一種所謂的分布式版本管理工具,可以記錄我的本地修改。真是令我喜大普奔。

下面介紹一下怎麼利用git來管理本地的**修改。

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

「svn伺服器端不是簡單將上傳的檔案乙個乙個存放起來的,svn伺服器端預設採用的fsfs格式是將每次commit的內容增量方式存放的,每個增量包存成1個檔案,這個增量包中包括了這次commit的全部資料。也就是說你不可能在伺服器端存放該版本庫的資料夾下找到你上傳的某個檔案」。

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

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

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

第四步,在工程資料夾右鍵,選擇git history,我們既可以看到本地的此次修改記錄。

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

今天就記錄到這裡,明天會對背景中的場景的進行詳細的介紹,給出git的解決方案。

版本控制 Git和SVN

一 git和svn的區別 git不僅僅是個版本控制系統,它也是個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章的主要目的就是通過介紹git能做什麼 它和 svn在深層次上究竟有什麼不同來幫助你認識它。...

GIT和SVN版本控制

1.什麼是版本控制?版本控制最主要的功能就是追蹤檔案的變更。它將什麼時候 什麼人更改了檔案的什麼內容等資訊忠實地了已錄下來。每一次檔案的改變,檔案的版本號都將增加。除了記錄版本變更外,版本控制的另乙個重要功能是並行開發。軟體開發往往是多人協同作業,版本控制可以有效地解決版本的同步以及不同開發者之間的...

svn和git版本控制

svn 1.svn版本控制器需要伺服器和客戶端 伺服器 visualsvn 客戶端 小烏龜tortoisesvn 伺服器的users下可以建立開發者使用者賬戶,賬戶許可權 從庫的secuirity中設定讀寫 唯讀等許可權。注意 客戶端get的時候缺省會建立乙個.svn檔案,這個檔案會儲存一些基本資訊...