分布式版本控制
创建与合并分支
- 每次提交,Git都把它们串成⼀一条时间线,这条时间线就是一个分支。
HEAD指向当前分支。
master用来表示主分支。
当我们创建新的分支,例如dev时,Git新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前分支在dev上:
从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动⼀一步,而master指针不变。
假如我们在dev上的工作完成了,就可以把dev合并到master上。最简单
的方法,就是直接把master指向dev的当前提交,就完成了合并。
合并完分支后,甚至可以删除dev分支。删除dev分支就是把dev指针给删掉,删掉后,我们就剩下了⼀一条master分支。
分支命令
查看分支:git branch 创建分支:git branch name 切换分支:git checkout name 创建+切换分支:git checkout -b name 合并某分支到当前分支:git merge name 删除分支:git branch -d name
Bug分支
1. 软件开发中,bug就像家常便饭一样。有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除。
当你接到一个修复一个代号101的bug的任务时,很自然地,你想创建一个分支issue -101来修复它,但是,等等,当前正在dev上进行的工作还没有提交。
并不是你不想提交,而是工作只进行到一半,还没法提交,预计完成还需1天时间。但是,必须在两个小时内修复该bug,怎么办?幸好,Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
此时工作区变成干净的:
Git把stash内容存在某个地方了,
需要恢复时,可以采用两种方式;
- 用git stash apply恢复,但是恢复后,stash内容并不删除,你需要用git stash drop来删除
- 另一种方式是用git stash pop,恢复的同时把stash内容也删了