首頁 > 軟體

Git 分支的建立、合併、管理和刪除

2020-06-16 17:11:58

幾乎每一種版本控制系統都以某種形式支援分支。使用分支意味著你可以從開發主線上分離開來,然後在不影響主線的同時繼續工作。在很多版本控制系統中,這是個昂貴的過程,常常需要建立一個原始碼目錄的完整副本,對大型專案來說會花費很長時間。

有人把 Git 的分支模型稱為“必殺技特性”,而正是因為它,將 Git 從版本控制系統家族裡區分出來。Git 有何特別之處呢?Git 的分支可謂是難以置信的輕量級,它的新建操作幾乎可以在瞬間完成,並且在不同分支間切換起來也差不多一樣快。和許多其他版本控制系統不同,Git 鼓勵在工作流程中頻繁使用分支與合併,哪怕一天之內進行許多次都沒有關係。理解分支的概念並熟練運用後,你才會意識到為什麼 Git 是一個如此強大而獨特的工具,並從此真正改變你的開發方式。

了解分支

如果想實現多人共同作業、劃出Bug區、Feature區等功能,就需要分支功能。(確實很強大的地方)

每次commit時,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裡,這個分支叫主分支,即master分支。而此時HEAD也指向master

每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。

當我們建立新的分支dev的時候,將HEAD指向dev,這時候就在dev分支上了。

建立和進入分支

建立分支:git branch 分支名字

進入分支:git checkout 分支名字

建立並且進入分支:git checkout -b 分支名字

如果想檢視當前在哪個分支:git branch

合併分支

如果在dev分支下提交一張照片,此時,工作區是有照片的(在資料夾檢視)。然後切換到master分支,會發現原生的工作區被重新整理了一下,然後圖片不見了。在命令列ls檢視檔案列表也沒有圖片(如截圖所示)。此時,需要將dev分支合併到master分支

合併分支:git merge 分支名字。將分支合併到當前分支。這時可以發現,照片出現了。(附截圖)

注意到上面的Fast-forward資訊,Git告訴我們,這次合併是“快進模式”,也就是直接把master指向dev的當前提交,所以合併速度非常快。當然,也不是每次合併都能Fast-forward。

如果加上--no-ff引數就是普通合併模式。這樣就保留了歷史資訊。

解決分支衝突

如果兩個或多個分支對同一檔案作出不同的操作,合併的時候就會有衝突
如下面截圖先在dev中修改txt,再在master中作出不同的修改。

此時,git merge dev就會報錯,提醒有衝突,需要手動解決

當然,也可以通過git status檢視,會發現both modified的錯誤提示。或者cat temp.txt,不同分支的修改的不同之處被標註了出來。

在當前分支修改檔案內容並且再次提交修改,即可以解決衝突。

刪除分支

一條命令:git branch -d 分支名字即可刪除

如果分支還未合併到當前分支:git branch -D 分支名字 強制刪除。

團隊共同作業(分支策略)

在實際開發中,我們應該按照幾個基本原則進行分支管理:

  1. 首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

  2. 那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合併到master上,在master分支發布1.0版本;

  3. 你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了

  4. 最後發布時,再將dev合併到master

更多 Git 教學系列文章: 

GitHub 使用教學圖文詳解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git使用圖文詳細教學  http://www.linuxidc.com/Linux/2016-11/136781.htm

Ubuntu Git安裝與使用 http://www.linuxidc.com/Linux/2016-11/136769.htm

Git 標籤管理詳解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理詳解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 遠端倉庫詳解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地倉庫(Repository)詳解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 伺服器搭建與用戶端安裝  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享實用的GitHub 使用教學 http://www.linuxidc.com/Linux/2014-04/100556.htm 

Git從入門到學會 http://www.linuxidc.com/Linux/2016-10/135872.htm

Git基本操作詳解 http://www.linuxidc.com/Linux/2016-10/135691.htm

Git部署與常用基本命令詳解   http://www.linuxidc.com/Linux/2017-06/144961.htm

分散式版本控制系統 Git 詳細教學  http://www.linuxidc.com/Linux/2017-05/143747.htm


IT145.com E-mail:sddin#qq.com