Git使用教程2——Git本地仓库分支操作,解决冲突问题
上节简单介绍了Git本地仓库的基础操作后,我们接下来讲解git本地仓库的分支操作。
首先什么是分支?
紧接上节的本地仓库git_demo1,我们来看分支:git branch。目前只有一个master分支。
git-log一下,我们创建新的分支dev。git branch dev ,然后切换到dev(git checkout dev)。或者创建分支并切换到dev(git checkout -b dev )。然后在dev分支上进行操作(删除所有文件),在master分支修改file.txt。演示过程如图:
(0) 创建dev分支并删除所有文件
(1)从dev分支切换到master,修改file1.txt,并提交到本地仓库中。
(2)切换到dev分支并查看文件和提交状态
我们可以看到,不同分支的工作目录中文件是不同的,但是他们都共享这个仓库的提交状态。于是就可以方便实现不同分支之间的协同开发,查看各个分支之间的进度安排。
(3)分支合并
此时我们想要将dev分支整合到master:
(1)切换到目标分支master(一般都是其它分支整合到master上)(2)git merge dev
注意:dev提交到仓库的操作时删除所有文件,而master分支是修改file1.txt。在进行整合时会有冲突。
接下来我们来解决冲突:
首先分析冲突所在:不同分支对本地仓库的提交中相同的部分做了不同的修改,在合并时产生冲突。
没有冲突部分直接是两个分支的提交的合并。
在本次合并时,不同分支的提交中修改的相同部分是file1.txt。dev删除了file1.txt,master修改了file1.txt。所以我们只要确认了file.txt的最终状态,把他提交到暂存区,再把它交到仓库中即可完成整合。下面进行演示:
补充一个分支合并时的快进模式,当一个分支的操作(提交)包含另一个分支时,在进行分支合并后,被包含分支会快进到包含分支。
(4)删除分支
git branch -d 分支名(正常删除)git branch -D 分支名(强制删除)
(1)不能删除当前分支(2)对弈合并分支进行删除时,正常删除即可;对未合并分支,需要删除时可强制删除。
(5)说明一下分支在开发中实际的使用情况:
(1)master分支用于线上运行的版本。(2)hotfix/*****分支用于解决线上分支出现的Bug。(3)develop分支主要用于开发。(4)feature/****分支是从develop分支创建,用于和develop分支同期并行开发,但在不同期与deveelop合并,然后develop在与master分支合并完成不同时期上线的功能。(5)其他分支:例如test分支(测试分支),pre分支(预上线分支)。
下面是图解: