在分支上工作
在上一篇文章《Git之不明覺厲3》中小伙伴克隆了一個倉庫,前面我們的操作都是在master分支上的,一般來說,我們開展一個新的工作,都需要建立一個新的branch,git的branch非常的高效率,所以可以反復(fù)的創(chuàng)建和切換。但是說了這么多,到底啥才是branch啊?
分支是啥
A branch represents an independent line of development. Branches serve as an abstraction for the edit/stage/commit process
從字面上理解分支也是可以的,上面的英文翻譯一下,分支就是一條單獨(dú)的開發(fā)線路。
Paste_Image.png
上圖的Little Feature,Master,Big Feature都是分支。圖上的箭頭指向了分支的最后一個commit
使用分支
- 創(chuàng)建分支
git branch tiger
創(chuàng)建了一個名字叫tiger的分支
- 查看分支
git branch
- 切換分支
git checkout tiger
- 增加文件
我們在新分支上提交一個文件。
echo "I like tiger" > tiger.txt
git add tiger.txt
git commit -m "create tiger file"
- 文件在master分支中存在嗎?
我們可以看到文件在master中并不存在,我們每創(chuàng)建一個新的branch,都有一個新的working directory, staging area, and project history
Paste_Image.png
如果我們查看log,也會發(fā)現(xiàn)master中沒有tiger中的commit
合并
我們現(xiàn)在切換回master分支之后,看不到tiger分支里面的修改了,我們可以使用合并操作,來合并兩個分支
git merge tiger
現(xiàn)在我們可以看到文件tiger.txt了
Paste_Image.png
merge有兩種形式,我們看一下
- fast-forward merge
Paste_Image.png
我們從上圖可以看到master到some feature有一條線路可以走,只有移動master的HEAD就可以了
- 3-way merge
Paste_Image.png
從圖上可以看到,master向前沒有一條線路可以走到some feature,所以創(chuàng)建一個新的commit,把master的HEAD移動過去。上圖的紅圈表示三個commit合成了最后merge的commit
詳細(xì)資料可以查看git-merge
刪除
我們切換到master了,如果覺得tiger分支沒有用,那么可以刪除它
git branch -d tiger