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