Git使用教程2——Git本地仓库分支操作,解决冲突问题

发布时间 2023-09-02 09:02:40作者: 几人著眼到青衫

上节简单介绍了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分支(预上线分支)。

下面是图解: