分布式版本管理工具GIT使用心得

2021-06-25 14:26:43 字數 3071 閱讀 8628

分布式版本管理工具git使用心得

來自於:服務端框架工具經驗

2014-08-13 11:01

從這個專案開始,我們專案組已經全面把**管理從svn轉移到了git。很多人會問為什麼不用svn呢?svn有什麼不好嗎?

svn缺點

svn的確是乙個很強大的版本管理工具,但是他有以下一些缺點:

1.**提交更新等操作速度慢。由於svn是乙個集中式的專案管理工具,所有操作都要和伺服器互動,當專案大了以後所有操作都很慢,感覺很笨重,比較影響工作效率

2.**merge難度高,當開發乙個月的版本要做**merge的時候特別是有目錄變更的時候,那叫乙個痛苦啊,各種tree conflict, 處理起來難啊,而且速度很慢,有時為了做乙個merge要花費一下午的時間。

3.目錄管理麻煩,由於svn管理的工程下都有乙個.svn的目錄儲存當前目錄的原資料,因此如果你想把這個目錄下的內容移動那就很麻煩了,直接拷貝會有一大堆問題等著你,必須連到遠端操控操作,費時費力也容易出錯。

4.分支代價大,svn的分支代價很大,如果要為了乙個測試性的任務開個分支,需要到遠端倉庫開分支,而且會複製專案工程,占用伺服器磁碟空間。

git優缺點

優點:1.**更新、提交、diff等操作都很快,git所有和伺服器的操作互動都是通過乙個檔案快照,而不是像svn那樣乙個個檔案比較,速度簡直天差地遠。我相同的工程目錄svn checkou出來話了幾分鐘,git clone僅僅需要十秒左右。**diff git是乙個本地操作,而svn是遠端操作

2.可以開本地分支,開分支代價小,分支merge簡單。測試性的任務本地git branch xx開個xx分支開開發,用完後git merge xx就可以了,分支合併僅需數秒,而svn需要七八分鐘。平時開發的時候可以頻繁開分支、合併分支、刪除分支。

3.**管理無汙染。svn會在每個目錄下放乙個.svn目錄,你不能破壞這個目錄,一旦這個目錄破壞或者移動到非它所屬的目錄,就會發生那些目錄無法被svn管理到的情況,解決起來是非常頭疼的。而git僅在專案根目錄下放了乙個git目錄,在其他**目錄未注入任何東西,不用擔心刪除目錄、移動目錄會帶來什麼影響。管理非常方便。

4.伺服器占用空間少。對於長期專案來說,一般都會有很多分支,svn分支多了磁碟佔用量就會大量增加。但是git開乙個分支僅僅增加幾十位元組的空間而已。對長期的大專案來說git會節省空間。

缺點:1、伺服器許可權難以管理,由於git沒有目錄概念,無法針對不同使用者賦予不同目錄的讀寫許可權,只能從專案總體角度來賦予許可權。由於我們專案人少,**許可權管理沒那麼嚴格,所以這個問題不大。如果真的需要管理可以考慮通過sub model的方式來控制許可權,相對麻煩一些。

2. 版本號不是遞增的數字,而是sha1校驗碼,不太容易判斷哪個版本更新,要查歷史記錄。

3.一般乙個專案會有很多任務程,每個開發人員負責不同的工程,當乙個開發同事改好要push時會發現不能提交,要先更新merge其他同事的**,再提交。雖然代價也不大,就是稍微麻煩一些,記得每次提交前先pull一下其他人的更新。因為git的提交是針對整個專案工程的,沒有目錄概念。

總體來說git的優點勝過他的缺點。

二、git原理

生命週期

4.commit 

當你把準備提交狀態的檔案提交到本地倉庫

git commit -m "some comment"

5.push 

git push 《遠端倉庫名》  《分支名》

像這個origin  ssh://***@***:2222/backend/ddd.git (push)

它的遠端倉庫名就是origin

6.branch

git branch ***

開出乙個名為***的分支

7.git checkout ***

同svn switch,切換到名為***的分支

8.git merge ***

將***分支合併到當前分支上

9.git pull

更新遠端倉庫的更新

10.git reset

回滾操作

git reset --hard

把之前被搞亂的**reset到head的**,加入你執行git pull時發生conflict又無法總動merge,可以使用該命令來處理先丟棄本地提交

三、git分支管理方法

以下是乙個比較優秀的分支管理模型,也是我們專案組目前使用的分支管理辦法

1. master 分支為發布分支,絕對要求穩定,由配置管理員控制,開發不提交**到master。每

次上線由配置管理員在master 上打tag,並打build。

2. develop 分支是開發的長期分支

3. release 分支是當開發到一定階段時準備提交qa 測試準備release 前開的分支,開發人員從

develop 分支上拉出release 分支,qa 在該分支測試,發現問題fix bug 並提交到release 分支。

測試通過後將該release 分支merge 到master 上線,並且merge 到develop 分支。

4. 當線上出現緊急bug 時在master 上開hostfixes 分支,修復線上bug。修復完成後merge 到

master 分支上線,並merge 到develop 分支。

5. 開發人員準備後期版本的一些開發,可以開幾個future branch,不影響當前版本的release,

當準備發布時再合併到develop 分支。

6. 另外,由於git 開分支代價很小,開發人員在開發過程中盡量使用本地分支開發,不要頻繁

提交develop 分支,當階段性完成部分任務的時候合併develop 分支並提交,減小對其他開

發人員的影響。

7. 每次上線由配置管理員在master 上打tag,並打build。

四、結論

開發人員從svn轉化到git需要一定的思維轉變,git 也有一些用起來沒有svn方便的地方,但是適應了以後會發現git管理**真的很方便,能大大提公升工作效率。尤其是在分支管理上,幾乎不會花費太多精力。

五、參考檔案

pro git:  

標籤:服務端工具

git分布式版本管理工具學習筆記

綜述 來了新的公司,以前用的是svn,現在是git,在這裡總結學習下,提高自己的認識。svn vcss系統等都是集中式的版本控制系統,git是分布式的。兩者的區別是 svn 面試問題 在集中庫建立乙個hotfix分支,進行修改後將其push到集中庫中,然後傳送乙個pr向qa請求合併 到product...

Git分布式版本管理工具 流程分享

這裡對如何安裝git不再贅述,可自行參考其他教程進行安裝。1.初始化git倉庫 在專案的根目錄中,右鍵選擇git bash here開啟git命令列。命令 git init初始化git倉庫,會生成乙個.git目錄,預設是隱藏的,存放專案 備份。2.開始建立正常專案檔案 正常新增專案檔案,如 read...

Git版本管理工具使用

1.git簡介 git 讀音為 g t 是乙個開源的分布式版本控制系統,可以有效 高速地處理從很小到非常大的專案版本管理。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。2.安裝git 3.git使用 git倉儲 建立儲存資料夾,在資...