分支branch做为git一个强大功能,在平时开发若是可以善加使用,定能成倍提高开发效率。html
主分支master
上通常是稳定版本,须要保证随时都能发布。git
因此,能够创建一个开发分支用于开发新功能。测试
git branch dev
查看有哪些分支3d
git branch -a * dev master bugfix-1 remotes/origin/HEAD -> origin/master remotes/origin/master remotes/origin/dev remotes/source/master
查看本地有哪些分支code
git branch * dev master bugfix-1
查看远程有哪些分支orm
git branch -r origin/HEAD -> origin/master origin/master origin/dev source/master
当一个开发分支上的新功能已经开发完成,并测试OK,此时,能够合并到master
.htm
当前在master
分支上,使用以下命令进行合并:blog
git merge dev --no-ff -m "AI2.0开发完成"
强烈建议使用--no-ff
选项,这样,当合并到主分支的时候,会生成一个提交记录。图片
若是合并到主分支后须要回滚,直接找到刚才合并时的提交记录,进行回滚便可。开发
尤为是在主分支和dev分支交叉提交记录的时候,若是不使用--no-ff,须要挨个找哪一个记录是在dev分支上提交的,会比较麻烦。
默认状况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。
两种合并方式以下图所示。
fast-farward
no-fast-farward
在开发分支上提交了不少内容,这个时候,若是须要比较开发分支与主分支的差别,可使用如下方法:
git diff branch1 branch2 --stat
例如,查看dev
分支相对于master
的改动文件:
git diff master dev --stat
git diff branch1 branch2
用 oneline 或 format 时结合 --graph 选项,能够看到开头多出一些 ASCII 字符串表示的简单图形,形象地展现了每一个提交所在的分支及其分化衍合状况。
git log --pretty=oneline --graph * 7880521e21b1329965179bd45d632a3c91e227fa (HEAD -> master) Merge branch 'dev' |\ | * 27cc24423ba0fcb01365eb7ffdc9ed33b059c36b (dev) 3 test | * 714788192eb4760b614c2ab5fe45634df89904ee 2 test * | ccce2c06660d8263e6a65d124ab947db0be56556 2 txt |/ * 24c3941c7f5ef3e6b0c0be7638d29387f4643d90 1 test
git log --pretty=format:"%h %s" --graph * 7880521 Merge branch 'dev' |\ | * 27cc244 3 test | * 7147881 2 test * | ccce2c0 2 txt |/ * 24c3941 1 test (END)
*
表明是在哪一个分支提交的。