![eb40c32b4d7618e58d0c0338ba7cfc2f.png](https://i-blog.csdnimg.cn/blog_migrate/c5df44d15bae4b08c415c76daf24fd94.jpeg)
很多时候我们需要给自己或者客户用一个稳定的版本库, 然后同时还在开发另外一个升级版. 自然而然, 我们会想到把这两者分开处理, 用户使用稳定版, 我们开发我们的开发版. git就是通过分支来实现这样的功能的。
![aa533168d817a3483110d093fda38771.png](https://i-blog.csdnimg.cn/blog_migrate/5d359205952ff7e354d6010727ed4382.jpeg)
系统默认给我们创建的是master分支,通常我们会把master当作最终的版本, 而开发新版本或者新属性的时候, 在另外一个分支上进行, 这样就能使开发和使用互不干扰了.git中所有的分支拥有相同的地位,只不过我们约定俗成的master是主分支。
1,查看分支
我们之前的文件当中, 仅仅只有一条master分支, 我们可以通过--graph来观看分支
![5363c0b50fc13fea58bd0810aa7b5996.png](https://i-blog.csdnimg.cn/blog_migrate/18f65132c406704cce7e6a73d4b6eae0.jpeg)
命令1:git log --oneline --graph
2,创建、查看、切换分支
![fca5041a29be7823fbecdb9ce0809ef9.png](https://i-blog.csdnimg.cn/blog_migrate/8310ab3561a84672f1b7e7c8a9e13748.jpeg)
命令1:git branch dev # 建立 dev 分支
命令2:git branch # 查看当前分支
注:创建了分支,但是当前的工作分支并不会切换过去
![bab896ca5ff2c88065f80fecd453937d.png](https://i-blog.csdnimg.cn/blog_migrate/3eb608ac4648b371a459a17c8417ef7c.jpeg)
命令1:git checkout dev #切换分支
注:
git checkout -b dev #使用 checkout -b + 分支名, 就能直接创建和切换到新建的分支
3,将 dev 的修改推送到 master
![367f97cad45b33457f1e62b2373db8d9.png](https://i-blog.csdnimg.cn/blog_migrate/3f4949566d90a1946539992af2baf998.jpeg)
命令1:git commit -am "change 3 in dev" # "-am": add 所有改变 并直接 commit
注:我们可以发现没有需要commit的东西
![d0e7ee1a2dd019e886a399b204ea16e8.png](https://i-blog.csdnimg.cn/blog_migrate/f31fce404ad718a729f82ce9d65f7fc5.jpeg)
命令1:git checkout master # 切换至 master 才能把其他分支合并过来
命令2:git merge dev # 将 dev merge 到 master 中
命令3:git log --oneline --graph
要注意的是, 如果直接git merge dev, git 会采用默认的Fast forward格式进行merge, 这样merge的这次操作不会有commit信息.log中也不会有分支的图案. 我们可以采取--no-ff这种方式保留merge的commit信息.
![05deb36e44eb26d13600dc0cc284de3d.png](https://i-blog.csdnimg.cn/blog_migrate/df892a1383cc3f7f3a1b5fc436a3acdb.jpeg)
![2b680e91afa7a9c1a27024050b2e3bee.png](https://i-blog.csdnimg.cn/blog_migrate/66096e0e6b6a6bdb95fad0cbc7c4be58.jpeg)
命令1: git checkout dev
命令2:git commit -am "再次修改了dev分支"
命令3:git checkout master
命令4:git merge --no-ff -m "保留分支信息" dev
命令5:git log --oneline --graph
参考:
分支 (branch)morvanzhou.github.io