转自文章《git使用教程三 本地分支操作》https://blog.csdn.net/yangwen123/article/details/8664637
创建分支
- $ git branch testing #创建新分支testing
- $ git checkout –b testing #创建并切换到testing分支
- $ git checkout –b testing master # 基于master分支创建并切换到testing分支
切换分支
- $ git checkout testing #切换到testing分支,HEAD执向testing分支
![](https://img-my.csdn.net/uploads/201303/12/1363079331_5487.png)
分支提交
- $ git checkout testing #切换到testing分支
- $ git commit –am “update ui” #提交后, HEAD 随着分支一起向前移动
![](https://img-my.csdn.net/uploads/201303/12/1363079438_8611.png)
- $ git checkout master
- $ git commit –am “update tools”
- 提交后 HEAD 随着分支一起向前移动
![](https://img-my.csdn.net/uploads/201303/12/1363079495_4613.png)
分支合并
- git merge
- 1.将一个分支的修改合并到另一个分支上。
- 2.三方合并,会形成merge节点。
- 3.快速前进,不会形成merge节点,分支图呈线性。
- 当前 master 分支所在的 commit 是要并入的 hotfix 分支的直接上游,Git 只需把指针直接右移。换句话说,如果顺着一个分支走下去可以到达另一个分支,那么 Git 在合并两者时,只会简单地把指针前移,因为没有什么分歧需要解决,所以这个过程叫做快进(Fast forward)。
- --commit 合并后自动提交
- --no-commit 合并后仅仅改变当前分支中的工作区的文件内容
- -m 自动提交时所使用的注释
合并冲突
- git merge 冲突解决
- 1、冲突产生的原因
- 修改了两个待合并分支里同一个文件的同一部分。
- 2、查看冲突文件:
- 任何包含未解决冲突的文件都会以未合并(unmerged)状态列出。
- git status
- unmerged:
- 3、解决冲突:
- vi 冲突文件,合并部分用<<<,===,>>> 分隔符标记,手动解决冲突后,删掉这些标记。
- 在解决完所有文件的冲突后,执行git add ,使文件标记为冲突已解决;运行git status查看文件状态为modified,再执行git commit 提交,完成这次合并提交。
查看分支
- git branch
- git branch –a
- git branch -r
查看各分支最后提交的commit
- git branch -v
删除分支
- git branch –d branchname
- 删除分支仅仅是删除该分支的名称而已,不会删除该分支所包含的任何提交记录,在git系统中,只要提交过的内容就不会丢失
查看哪些分支是否合入当前分支
- git branch –merged
查看尚未合并入的分支
- git branch –no-merged
- 远程分支(remote branch)
- 是对远程仓库状态的索引。它们是一些无法移动的本地分支;只有在进行 Git 的网络活动时才会更新