一.分支管理
-
分支理解
分支开发,笔者在这里说下对于分支的理解,比如现在一个项目工程中有两个功能点需要开发,由于开发时间有限,为了保证功能准时上线,功能开发就需要并行,这时候我们就用到了分支开发。总之分支开发能是为了提高开发效率的。
-
分支的创建
笔者经历过svn创建分支和合并分支。那是一件相当痛苦的事情,一般RD极少有创建分支的权限,而且svn创建分支和分支切换也是比较麻烦的,当然现在有很多管理后台简化了创建分支的复杂度,学习了git分开创建和合并,你会发现分支开发如此简单。
使用"git checkout -b <分支名>",创建新的分支并使用,如图:
-
分支的查看
上图中“git branch”用于查看本地仓库的分支列表,有时我们可能仅仅想先创建一个分支而不是立刻就是用,后面在切换分支,此时“git branch <分支名>”用来创建分支
"git checkout <分支名>"切换分支
“git checkout” 是不是很眼熟好像在哪里见过(我们好像在哪见过,你记得嘛???),是在git本地相关操作(二)使用到的,在文件没有提交仓库之前,撤销本地文件的修改"git checkout -- <file>"
我们继续对introduce.txt文件进行操作:
(1).test分支的编辑提交到本地仓库
(2).dev分支编辑提交
-
分支冲突解决
如图,提示发生冲突
上面的<<<<<<以上便是的两个分支共同的部分,=======表示当前分支修改的内容,>>>>>>>表示的合并过来的分支修改的内容,笔者解决的方式都保留这两个分支修改的内容,执行“git add”、"git commit "重新提交来解决冲突,如图:
-
分支的合并(不冲突)
我们接着上步的操作,切换到master分支,然后将dev分支的内容合并到master上,使用“git merge 分支名”"git merge 分支名”命令中的分支名是合并时候将该分支中的数据合并到当前分支上,数据的方向大家要搞清楚
-
分支的删除
“git branch -d <分支名>”,如图:
-
查看各分支路径
通过“git log --graph --pretty=oneline”git会以图形方式显示各个分支路径
二.总结
-
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各个分支及分支之间合并的操作及路径
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分支上即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。