大綱:
1.前言
2.創建分支
3.切換分支
4.合並分支(快速合並)
5.刪除分支
6.分支合並沖突
7.合並分支(普通合並)
8.分支管理策略
9.團隊多人開發協作
10.總結
注,測試機 CentOS 5.5 x86_64,Git 服務器版本:git version 1.8.2.1,客戶端版本:git version 1.9.2.msysgit.0。所有軟件請到這裡下載:http://msysgit.github.io/。
1.前言
在上一篇博客中我們主要講解了Git 遠程倉庫,相信大家對遠程的Git倉庫有一定的了解,嘿嘿。在這一篇博客中我們來在大家講解一下Git 分支管理,這可以說是Git的又一大特點。下面我們就來學習一下Git分支管理吧。
我們先來說一個簡單的案例吧,你們團隊中有多個人再開發一下項目,一同事再開發一個新的功能,需要一周時間完成,他寫了其中的30%還沒有寫完,如果他提交了這個版本,那麼團隊中的其它人就不能繼續開發了。但是等到他全部寫完再全部提交,大家又看不到他的開發進度,也不能繼續干活,這如何是好呢?
對於上面的這個問題,我們就可以用分支管理的辦法來解決,一同事開發新功能他可以創建一個屬於他自己的分支,其它同事暫時看不到,繼續在開發分支(一般都有多個分支)上干活,他在自己的分支上干活,等他全部開發完成,再一次性的合並到開發分支上,這樣我們既可知道他的開發進度,又不影響大家干活,是不是很方便呢?
大家可能會說了,你Git的分支功能人家SVN也有啊,也沒什麼特殊的嘛。但我想說你那個創建和切換速度怎麼樣呢?嘿嘿,我想說誰用誰知道啊!但Git呢,無論你創建還是切換或者刪除都很快哦!
分支本質上其實就是一個指向某次提交的可變指針。Git 的默認分支名字為 master 。而我們是怎麼知道當前處於哪個分支當中呢?答案就是在於 HEAD 這個十分特殊的指針,它專門用於指向於本地分支中的當前分支。我們可以簡單理解為:commit <- branch <- HEAD (注,本來我們詳細說一下HEAD的,這個東西真不好說,goole了一下也沒幾個大神說這個,嘿嘿。下面我就通過講解幫助大家理解,簡單的說HEAD就是指向於本地分支中的當前分支,如下圖:) 下面我們來創建分支。
GitHub 教程系列文章:
GitHub 使用教程圖文詳解 http://www.linuxidc.com/Linux/2014-09/106230.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
2.創建分支
當我們需要調試某個Bug或者嘗試添加或修改程序中的某個模塊,而又不能影響主分支的開發時。就可以通過創建分支來滿足需求。創建分支相當於是創建一個新的分支指針指向當前所在的提交。我們在Commit3上創建dev分支:
如下圖所示,dev分支指向Commit3。
從上圖可知,雖然我們創建了一個新分支,但是 HEAD 仍然指向 master 。如果希望在創建分支的同時切換到新分支上,我們可以通過以下命令實現:
git checkout命令加上-b參數表示創建並切換分支上。
3.切換分支
切換當前分支我們可以用以下命令實現:
git branch -a 命令可以查看所有分支,現在我們HEAD指針便指向dev分支,大家可以在上圖中看到dev分支上有個*號。
下面我們修改一下readme.txt中的內容,並在dev分支上提交一下。如下圖:
用流程圖演示上述過程如下:
現在我們在dev分支上完成工作,現在到master分支上。如下圖:
流程圖表示如下:
切換回master分支後,再查看一個readme.txt文件,如下圖:
大家可以看到我們剛才增加的一行內容不見了,嘿嘿。因為那個提交是在dev分支上,而master分支沒有變化。好了,下面我們來演示一下合並分支。
更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-09/106232.htm