git版本控制工具的使用(2)分支管理

git format-patch xxxxx

git log --graph

git reset --hard xxxx

git am --abort

git am --signoff < xxx.patch

  

分支创建合并原理

在git中,HEAD指向了当前分支。以下五张图指针分别为:

原始分支情况,创建dev分支情况,对dev分支进行开发以后情况,master分支和dev分支合并情况,删除dev分支以后的情况。

 

 

 

创建与切换分支

 -b命令为创建与切换分支。其第一行作用相当于第二行的创建分支与第三行的切换分支总和。

git checkout -b dev
git branch dev
git checkout dev

查看当前分支

查看当前分支和被选中的分支

git branch

合并分支到主分支

当在分支上进行修改后,通过add 和 commit,完成本地版本库提交,如若合适,可以并入主分支。

快进的合并方法如下:

git checkout master
git merge dev

s在提交dev分支以后,首先切换到主分支,使用merge命令指定dev分支,以合并到主分支master。

这种合并通过修改指针实现,合并后会丢掉分支信息

switch命令切换分支

-c为创建并切换分支,和checkout -b效果相同。第二行为切换分支,和checkout作用相同,但是更容易理解。

git switch -c dev
git switch master

合并分支冲突原因和处理

当主分支master和分支dev都进行了add和commit操作以后,二者不一致,则导致分支合并的取舍问题,无法直接移动指针进行合并。

 

 

 merge失败以后,可以通过以下查看原因。

git status

这时,冲突的文件已经被修改为如下格式,编辑并写为指定自己想要的格式,重新通过add和commit,即完成了merge的过程

其中,原始的dev分支仍然存在。当编辑了dev分支以后,重新合并到master分支,则又需要重新确定merge过程保留的内容。

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> dev

查看分支图与合并情况

git log --graph --pretty=oneline --abbrev-commit

删除分支

git branch -d dev

强行删除分支使用-D选项。

合并分支时no-ff的使用

合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

即,使用no-ff在合并后留有合并历史。否则dev分支merge后丢失

合并dev分支,禁用fast-forward。如下示例:

git merge --no-ff   -m "instruction"  dev

禁用fast-forward后,可以保留dev分支

stash的临时存储功能

保存代码现场,转到其他分支进行临时处理后,返回,恢复现场,继续任务。

git stash将当前工作现场存储起来,临时处理其它事务,如创建其它分支,提交等。
git stash list查看工作现场的保存列表
git stash apply恢复现场,不删除保存列表内容。
git stash apply stash@{0}恢复指定的现场,不删除保存列表内容。
git stash drop删除保存列表 git stash pop 出栈,恢复现场并删除

复制一个特定的提交到当前分支

cherry-pick命令,让我们能复制一个特定的提交到当前分支

一般用于补丁不同分支应用补丁等,示例如下:

git cherry-pick 4c805e2

  

posted @ 2019-03-18 01:32  大浪淘沙、  阅读(242)  评论(0)    收藏  举报