git:分支控制
目录
1.什么是分支
2.查看当前在哪个分支
3.分支的创建
3.分支的切换
4.分支的合并
5.删除分支
6.使用非fast-forward模式提交
7.解决冲突
8.分支策略
1.什么是分支
master主分支:主分支,master分支上的代码通常是部署在生产环境中的,通常是稳定的代码,不会再主分支上进行任何的开发操作,写出个bug那服务就直接挂了就惨了。
通常进行开发的时候通常会创建一个分支,在分支上开发,对分支修改不会影响主分支,如果代码没问题,再将分支合并到主分支。
2.查看当前在哪个分支
git branch
当前在master分支
3.分支的创建
git branch [分支的名字] //创建一个分支 git checkout -b [分支名字] //创建一个分支并进入
创建一个dev分支并查看
使用checkout创建分支
3.分支的切换
git checkout [分支名]
checkout命令还可将工作区的代码回退到 提交到暂存区的代码。
git checkout --[文件路径]
4.分支的合并
git merge [分支名]
合并head指向的分支和merge指定的分支。
将dev分支合并到主分支
查看合并情况
git log --graph --pretty=oneline --abbrev-commit
查看提交的日志, --graph就是以图形化的方式查看,--pretty=online更工整的打印信息,--abbrev-commit省略一些提交哈希值。
git log --graph --pretty=oneline --abbrev-commit
因为我这里对分支没做任何修改所以提交出来时这样的,也可以修改文件提交之后。
默认的提交方式是fast-forword ,这种提交方式是及其不建议的,如果将分支删除,就看不到这次提交是合并过来的还是直接commit的。
5.删除分支
git branch -d [分支名]
将dev分支删除
再次查看日志
我们发现已经看不到是否合并过了
6.使用非fast-forward模式提交
git merge --no-ff -m "非 ff 方式的分支合并" dev2
分支的信息即使将分支删除后也会保存。
7.解决冲突
当两个分支对同一行代码做出的改动,合并分支的时候,git也不知道你想要哪行代码,这时候需要程序员手动处理冲突。
冲突文件会有这样的信息
<<<<<<< HEAD 这是目标分支(通常是当前分支)的内容 ======= 这是源分支的内容 >>>>>>> <source_branch>
处理完之后再次进行commit。
8.分支策略
在实际开发中,我们应该按照⼏个基本原则进⾏分⽀管理:⾸先,master分⽀应该是⾮常稳定的,也就是仅⽤来发布新版本,平时不能在上⾯⼲活;那在哪⼲活呢?⼲活都在dev分⽀上,也就是说,dev分⽀是不稳定的,到某个时候,⽐如1.0版本发布 时,再把dev分⽀合并到master上,在master分⽀发布1.0版本;你和你的⼩伙伴们每个⼈都在dev分⽀上⼲活,每个⼈都有⾃⼰的分⽀,时不时地往dev分⽀上合并就 可以了。
