1. 程式人生 > >Git 分支管理及結合gitlab的使用

Git 分支管理及結合gitlab的使用

git git分支 git分支創建 git分支合並 git分支刪除

Git 分支管理及結合gitlab的使用

  1. 說明
    有關gitlab的說明及基本操作,請參考:http://blog.51cto.com/wutengfei/2090253
    使用git分支的作用,我們先來說一個簡單的案例吧,你們團隊中有多個人在開發一項目,一同事在開發一個新的功能,需要一周時間完成,他寫了其中的30%還沒有寫完,如果他提交了這個版本,那麽團隊中的其它人就不能繼續開發了。但是等到他全部寫完再全部提交,大家又看不到他的開發進度,也不能繼續幹活,這如何是好呢?
    對於上面的這個問題,我們就可以用分支管理的辦法來解決,一同事開發新功能他可以創建一個屬於他自己的分支,其它同事暫時看不到,繼續在開發分支(一般都有多個分支)上幹活,他在自己的分支上幹活,等他全部開發完成,再一次性的合並到開發分支上,這樣我們既可知道他的開發進度,又不影響大家幹活,是不是很方便呢?
    在這裏說明下:svn也可以實現上面所說的功能,但Git呢,無論你創建還是切換或者刪除都很快哦!
  2. 分支的本質
    分支本質上其實就是一個指向某次提交的可變指針。Git 的默認分支名字為 master 。而我們是怎麽知道當前處於哪個分支當中呢?答案就是在於 HEAD 這個十分特殊的指針,它專門用於指向於本地分支中的當前分支。我們可以簡單理解為:commit <- branch <- HEAD (註,簡單的說HEAD就是指向於本地分支中的當前分支) ,如圖所示:
    技術分享圖片
    說明:上圖中的dev指的是git的一個分支。
  3. 創建分支
    當我們需要調試某個Bug或者嘗試添加或修改程序中的某個模塊,而又不能影響主分支的開發時。就可以通過創建分支來滿足需求。創建分支相當於是創建一個新的分支指針指向當前所在的提交。我們在Commit3上創建dev分支:
    ##創建dev分支前,我們先查看下當前分支情況
    git branch -a
    \* master
    remotes/origin/master
    ##創建dev分支
    git branch dev
    ##查看當前分支
    git branch -a
    dev
    \* master
    remotes/origin/master
  4. 切換分支
    從上面操作可知,雖然我們創建了一個新分支,但是 HEAD 仍然指向 master 。如果希望在創建分支的同時切換到新分支上,我們可以通過以下命令實現:
    git checkout dev
    Switched to branch ‘dev‘
    git branch -a
    \* dev
    master
    remotes/origin/master
    ##說明:git checkout命令加上-b參數表示創建並切換分支上。

    git branch -a 命令可以查看所有分支,現在我們HEAD指針便指向dev分支,大家可以在上圖中看到dev分支上有個*號。如下圖所示:
    技術分享圖片

  5. 分支文件提交
    ##我們現在在dev分支上
    echo "this is a test" > shiyan.txt
    git add shiyan.txt
    git commit -m "add a file shiyan"
    [dev 0e7aa94] add a file shiyan
    1 file changed, 1 insertion(+)
    git push
    fatal: The current branch dev has no upstream branch.
    To push the current branch and set the remote as upstream, use:git push --set-upstream origin dev
    git push --set-upstream origin dev

    用流程圖演示上述過程如下:
    技術分享圖片
    現在我們在dev分支上完成工作。

    ##查看下dev分支上的文件
    ls
    shiyan.txt
    ##切換到master分支
    git checkout master
    ##查看master分支上的文件
    ls
    ##並沒有shiyan.txt這個文件,我們登入到gitlab上看一下,在dev分支上存在shiyan.txt這個文件。
    ##原因:因為那個提交是在dev分支上,而master分支沒有變化。
  6. 合並分支(快速合並)
    現在,我們把dev分支的工作成果合並到master分支上,操作如下:
    ##在master分支上進行操作
    git checkout master
    git merge dev
    Updating 602d921..f6f8543
    Fast-forward
    shiyan.txt | 1 +
    1 files changed, 1 insertion(+)
    create mode 100644 shiyan.txt
    ##git merge 命令用於合並指定分支到當前分支。合並後,再查看shiyan.txt的內容,就可以看到,和dev分支的最新提交是完全一樣的。
    ls
    shiyan.txt
    ##說明:
    (1)上面的Fast-forward信息,Git告訴我們,這次合並是“快進模式”,也就是直接把master指向dev的當前提交,所以合並速度非常快。當然,也不是每次合並都能Fast-forward,我們後面會將其他方式的合並。合並完成後,就可以放心地刪除dev分支了。
    (2)在gitlab上可以看到master分支裏已經存在shiyan.txt。
  7. 刪除分支
    ##在master分支上進行操作
    git checkout master
    git branch -d dev
    Deleted branch dev (was f6f8543).
    ##查看當前分支情況
    git branch -a
    \* master
    remotes/origin/dev
    remotes/origin/master
  8. 命令總結
    ##查看分支
    git branch -a
    ##創建分支
    git branch name
    ##切換分支 
    git checkout name
    ##創建並切換 
    git checkout -b name
    ##合並某分支到當前分支 
    git merge name
    ##刪除分支 
    git branch -d name

Git 分支管理及結合gitlab的使用