创建分支
$ git branch testing #创建新分支testing
$ git checkout –b testing #创建并切换到testing分支
$ git checkout –b testing master # 基于master分支创建并切换到testing分支
切换分支
$ git checkout testing #切换到testing分支,HEAD执向testing分支
分支提交
$ git checkout testing #切换到testing分支
$ git commit –am “update ui” #提交后, HEAD 随着分支一起向前移动
$ git checkout master
$ git commit –am “update tools”
提交后 HEAD 随着分支一起向前移动
分支合并
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 的网络活动时才会更新