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
Le vent se lève! . . . il faut tenter de vivre!
Le vent se lève! . . . il faut tenter de vivre!