情景分析:在开发过程中,尤其是比较规范的项目中,一般会存在几个不能级别的分支,dev,feature、master,
一般 dev 分支用于日常开发,我们日常开发的代码就往该分支上提,feature分支一般用来开发基本完成,准备上线的
- 分支的创建
git checkout -b test1 //参数 -b 表示创建并切换
git branch dev //创建分支
git checkout dev //切换分支
- 查看当前分支
git branch
- 合并分支内容到主分支(前提:分支修改内容已提交)
git checkout master //切换到主分支
git merge dev //合并指定分支到当前分支(这里是将分支内容合并到主分支)
- 删除已合并的分支
git branch -d dev
Administrator@USERCHI-ESLRVCD MINGW64 ~
$ cd test
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ git branch
* master
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ git checkout -b dev
Switched to a new branch 'dev'
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (dev)
$ git branch
* dev
master
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (dev)
$ git add readme.txt
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (dev)
$ git commit -m "change more"
[dev 3fc2a21] change more
1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (dev)
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ cat readme.txt
git is a version control system
and git is a free soft under the GPL
git is a distribute manage software,too.
aha
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ git merge dev
Updating 9344336..3fc2a21
Fast-forward
readme.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ cat readme.txt
git is a version control system
and git is a free soft under the GPL
git is a distribute manage software,too.
ahachange more
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ git branch -d dev
Deleted branch dev (was 3fc2a21).
Administrator@USERCHI-ESLRVCD MINGW64 ~/test (master)
$ git branch
* master
Git鼓励大量使用分支:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
- 当多个分支都被修改并且提交以后,在合并代码的过程中出现了冲突的话:
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
用git log --graph
命令可以看到分支合并图。
* 合并分支时,默认的是用fast forward,如果想以普通模式进行合并式,可以采用参数 --no --ff
git merge --no --ff -m "some commit" dev
合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。