前面在讲git的基本使用时提到过HEAD指向当前版本,但具体的情况是HEAD指向当前分支,当前分支指向最新的提交也就是当前版本
1.分支的创建与切换
查看当前分支
git branch,可以看到是默认的master分支
创建一个新的分支然后切换到新分支
git branch new_branch
git checkout new_branch
当然可以使用git checkout -b 分支 创建并切换到新分支
2.在新分支中提交一次修改
查看下git log
切换到master分支 git checkout master
再次查看git log,显然master分支没有我们刚刚提交的修改
3.分支的合并
现在我们在master分支中,我们要把new_branch分支合并过来
git merge new_branch
git log,可以看到合并成功了
4.分支的删除
合并成功之后可以删除分支了
git branch -d new_branch
5.分支合并的冲突问题
在上面第三点合并分支时采用的是fast-forward模式(只在新分支中编辑master已经存在的文件并提交,默认的方式,但是这种方式不会创建新的版本记录)
但是当我们新建一个分支后,在该分支与master分支编辑了同一个文件的相同部分并提交后再一次合并,此时就会出现冲突
此时可以在master中重新git add该文件,然后git commit即可
6.由于合并时fast-forward方式不会创建新的版本记录,在master中合并bug分支时我们就不知道最新的版本是否已经修复bug,此时可以使用
git merge --no-ff 分支 进行合并,使用git log -graph --pretty=oneline可以清楚的看到使用该命令创建了新的版本记录
7.储存工作场所
对工作区的部分文件修改工作未完成,但要优先处理其他分支的问题,此时不希望提交本工作区文件,可以先把工作区储存起来,等之后再进行恢复就可以继续编辑了
git stash 保存当前工作区
git stash list 查看储存的工作区
git stash pop 恢复工作区继续编辑