一.分支管理git
分支理解
分支开发,笔者在这里说下对于分支的理解,好比如今一个项目工程中有两个功能点须要开发,因为开发时间有限,为了保证功能准时上线,功能开发就须要并行,这时候咱们就用到了分支开发。总之分支开发能是为了提升开发效率的。segmentfault
分支的建立
笔者经历过svn建立分支和合并分支。那是一件至关痛苦的事情,通常RD极少有建立分支的权限,并且svn建立分支和分支切换也是比较麻烦的,固然如今有不少管理后台简化了建立分支的复杂度,学习了git分开建立和合并,你会发现分支开发如此简单。
使用"git checkout -b <分支名>",建立新的分支并使用,如图:svn
分支的查看
上图中“git branch”用于查看本地仓库的分支列表,有时咱们可能仅仅想先建立一个分支而不是马上就是用,后面在切换分支,此时“git branch <分支名>”用来建立分支
"git checkout <分支名>"切换分支
“git checkout” 是否是很眼熟好像在哪里见过(咱们好像在哪见过,你记得嘛???),是在git本地相关操做(二)使用到的,在文件没有提交仓库以前,撤销本地文件的修改"git checkout -- <file>"
咱们继续对introduce.txt文件进行操做:
(1).test分支的编辑提交到本地仓库
(2).dev分支编辑提交学习
分支冲突解决
如图,提示发生冲突
上面的<<<<<<以上即是的两个分支共同的部分,=======表示当前分支修改的内容,>>>>>>>表示的合并过来的分支修改的内容,笔者解决的方式都保留这两个分支修改的内容,执行“git add”、"git commit "从新提交来解决冲突,如图:spa
分支的合并(不冲突)
咱们接着上步的操做,切换到master分支,而后将dev分支的内容合并到master上,使用“git merge 分支名”"git merge 分支名”命令中的分支名是合并时候将该分支中的数据合并到当前分支上,数据的方向你们要搞清楚图片
分支的删除
“git branch -d <分支名>”,如图:开发
查看各分支路径
经过“git log --graph --pretty=oneline”git会以图形方式显示各个分支路径get
二.总结it
git命令总结
“git checkout -b <分支名>”建立分支并切换到新建立的分支上
“git branch”查看当前代码关联的本地仓库的分支
“git branch <分支名>”建立分支
“git checkout <分支名>”,切换到指定的分支上,注意与git checkout -- <file>区分
git分支合并时冲突的解决方式,收修改文件中冲突部门的内容,而后执行“git add”、"git commit "从新提交来解决冲
"git merge 分支名”合并的方向要搞清楚
“git branch -d <分支名>”分支的删除
“git log --graph --pretty=oneline”查看git各个分支及分支之间合并的操做及路径ast
git内部管理分支梳理
git把每次提交串成一条时间轴,这条时间轴就是git的一个分支,git默认的分支是master;HEAD是浮动的游标,做用是指向本地代码修改最新的版本(包括未提交的:处于编辑状态和staging状态),关系如图展现:上图展现的是,在执行完“git commit -m <desc>”的状态;若是在编辑完,提交前,若是没有执行"git add",HEAD指向的是工做区;若是执行了“git add”,HEAD执行的是stage区(暂存区)
建立分支,切换分支,HEAD会发生变化只想当前使用的分支,如图:在多分支开发过程当中,各分支的状态
分支合并之后各分支的状态,以及HEAD游标的指向状况,
注意:上图合并是将dev分支合并到主要执行的命令:
git checkout master
git merge dev
中间有一次分之切换而后当合并分支时,当前分支实际上代码是有变化的,变化的部分就是从其余分支上合并过来的,而后当前分支就至关于发生一次提交,在实践上有一个节点,表示当前合并之后的代码状态。实际开发过程当中,master分支要求是很是稳定的,用于版本发布的;平时咱们会在dev分支上进行开发,当须要发布新版代码的时候,就须要将dev分支的代码合并到master分支上,同事之间能够再建立分支进行独自开发,常常合并到dev分支上便可。