歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

Git 分支管理詳解

大綱:

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

Copyright © Linux教程網 All Rights Reserved