在分支上工作
在上一篇文章《Git之不明觉厉3》中小伙伴克隆了一个仓库,前面我们的操作都是在master分支上的,一般来说,我们开展一个新的工作,都需要建立一个新的branch,git的branch非常的高效率,所以可以反复的创建和切换。但是说了这么多,到底啥才是branch啊?
分支是啥
A branch represents an independent line of development. Branches serve as an abstraction for the edit/stage/commit process
从字面上理解分支也是可以的,上面的英文翻译一下,分支就是一条单独的开发线路。
上图的Little Feature,Master,Big Feature都是分支。图上的箭头指向了分支的最后一个commit
使用分支
- 创建分支
git branch tiger
创建了一个名字叫tiger的分支
- 查看分支
git branch
- 切换分支
git checkout tiger
- 增加文件
我们在新分支上提交一个文件。
echo "I like tiger" > tiger.txt
git add tiger.txt
git commit -m "create tiger file"
- 文件在master分支中存在吗?
我们可以看到文件在master中并不存在,我们每创建一个新的branch,都有一个新的working directory, staging area, and project history
如果我们查看log,也会发现master中没有tiger中的commit
合并
我们现在切换回master分支之后,看不到tiger分支里面的修改了,我们可以使用合并操作,来合并两个分支
git merge tiger
现在我们可以看到文件tiger.txt了
merge有两种形式,我们看一下
- fast-forward merge
我们从上图可以看到master到some feature有一条线路可以走,只有移动master的HEAD就可以了
- 3-way merge
从图上可以看到,master向前没有一条线路可以走到some feature,所以创建一个新的commit,把master的HEAD移动过去。上图的红圈表示三个commit合成了最后merge的commit
详细资料可以查看git-merge
删除
我们切换到master了,如果觉得tiger分支没有用,那么可以删除它
git branch -d tiger