上一篇版本控制系統(tǒng)Git 入門(三)
分支管理
強大的分支管理是git的一大優(yōu)勢之一味廊,當然有集中式管理系統(tǒng)SVN的也有分支的管理瓷产,但相比git相對弱很多。那么分支在實際中有什么作用呢肺孵?假設你和另一個同事是一起合作開發(fā)一個項目的正卧,這時候你正打算開發(fā)新的需求,而你的同事還在原來的版本上修改bug,而你的正在開發(fā)的新需求在時間上和風險上不是很得到控制估計會影響到你的同事在修改bug池磁,因此你不如創(chuàng)建一個屬于你自己的分支奔害,然后你開發(fā)完后再合并回原來的分支上,這樣就造成兩不誤了地熄』伲互不影響。其實發(fā)布版本的分支(一般叫Master分支)和正常開發(fā)(修改bug)的分支還有另有需求需要修改的分支都是需要的,如下圖
Master分支
master分支是git默認提供的分支端考,基本上所有的開發(fā)都是以master為中心進行開發(fā)雅潭,不同分支進行作業(yè)之后都會與master分支進行合并揭厚,如下圖
提示:再次提醒上篇中提到的HEAD,HEAD是指向當前分支中的最新提交。
顯示分支一覽表git branch
git branch
可以顯示分支名列表扶供,并且用*表示當前所在的分支筛圆。
解析:
根據(jù)命令提示,當前只有master分支椿浓,并且當前是在master分支下進行開發(fā)太援。
創(chuàng)建分支git branch <name>
使用命令git branch featureA
創(chuàng)建分支featureA。再使用git branch
查看分支列表扳碍。
解析:創(chuàng)建了分支featureA,但是還是在master分支上進行作業(yè)提岔。
切換分支git checkout <name>
在上面操作的基礎上使用命令git checkout featureA
切換到分支featureA上,再使用命令 git branch
查看當前所在的分支
創(chuàng)建左腔、切換分支 git checkout -b
但常常會使用git checkout -b 分支名
來創(chuàng)建并切換分支唧垦,它相當于執(zhí)行了創(chuàng)建和切換兩條命名。
解析:
由上圖的兩條命令知道液样,創(chuàng)建了featureB并且切換到了featureB中振亮。
切回上一個分支git checkout -
使用命令 git checkout -
是切回到上一個命令。
git merge 合并分支
切換到分支featureA鞭莽,在git.txt上加入一行add featureA坊秸,然后提交到分支上,切換到分支master澎怒,查看git.txt看出現(xiàn)了啥褒搔?
解析:
剛剛提交的 ,因為HEAD指向的是featureA分支喷面,所以你做的任何修改和提交都是發(fā)生在featureA上星瘾,對master分支沒有任何影響。
現(xiàn)在惧辈,切換回master分支琳状,在master分支上,合并featureA分支盒齿,使用git merge featureA
,再使用cat git.txt
查看git.txt的內容念逞。
解析:可以看到“add featureA”,已經添加進來了边翁。
刪除分支git branch -d <name>
繼續(xù)上面的操作翎承,在featureA上做的操作已經完成也合并到了master分支上,那么featureA已經沒有任何意義了(注意:開辟一個分支最好只做一個功能)符匾,那么就應該刪除它叨咖,使用git branch -d featureA
把分支featureA刪除。
解析:根據(jù)提示,featureA分支成功刪除甸各。
以圖表形式查看分支git log --graph
輸入命令git log --graph
以圖表的形式查看log仰剿。
非常直觀,請經常使用痴晦。