git,从小白到实战一小时速通之git分支与解决冲突

70 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第18天,点击查看活动详情

git分支

在git中,分支指的是从主线上分离出来进行另外的操作,既不影响主线,主线又可以继续干它的事,它可用来解决临时需求;当分支做完事后可合并到主线上,而分支的任务完成可以删掉了。

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。

查看本地分支

●命令: git branch

创建本地分支

●命令: git branch 分支名

*切换分支(checkout)

命令: git checkout分支名

我们还可以直接切换到一个不存在的分支(创建并切换)

●命令: git checkout -b分支名

*合并分支(merge)

一个分支上的提交可以合并到另一个分支

命令: git merge 分支名称

删除分支

不能删除当前分支,只能删除其他分支

git branch -d b1删除分支时,需要做各种检查

git branch -D b1不做任何检查,强制删除。 创建分支时,该分支提交到仓库没合并时,只能强制删除

案例

先开通一个新分支dev01,用新分支dev01创建一个新文件,然后提交到仓库,再查看一下不同分支下的本地仓库有什么区别。

创建并切换dev01分支,并新建一个devfile01.txt文件,提交到仓库。

image.png

dev01分支下的仓库:

image.png

master分支下的仓库:

image.png

可以看到,master主线上看不到devfile01文件,dev01分支与主线互不影响。通过git log也可以看出来,dev01的版本比master版本要更新。 image.png

我们切换回master分支,把dev01的分支合并到主线: git merge dev01 image.png

合并之后,master主线也存在devfile01.txt文件了

image.png

解决冲突

当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:

  1. 处理文件中冲突的地方
  2. 将解决完冲突的文件加入暂存区(add)
  3. 提交到仓库(commit)

案例

用dva01分支去修改file01文件,在file01第一行写入dev01,并提交到仓库

image.png

用主线master去修改file01文件,在file01第一行写入master01,并提交到仓库

image.png

当我们试图合并两个分支时,它就会显示有冲突

image.png

提示我们修复冲突再提交结果,我们重新打开file01文件。

image.png

文件修改后,再提交到仓库就可以了,我们git-log查看一下日志。

image.png

开发中分支使用原则与流程

几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着 你可以把你的工作从开发主线上分离开来进 重大的Bug修改、开发新的功能,以免影响开发主线。

在开发中,一般有如下分支使用原则与流程:

  • master (生产) 分支:线上分支,主分支,中小规模项目作为线上运行的应用对应的分支;

  • develop (开发)分支:是从master创建的分支,- -般作为开发部i的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要是合并到master分支,准备上线。

  • feature/xxxx分支:从develop创建的分支,-般是同期并行开发,但不同期上线时创建的分支,分支上的研发任务完成后合并develop分支。

  • hotfix/xxxx分支:从master派生的分支,-般作为线上bug修复使用,修复完成后需要合并到master、test、 develop分支。

  • 还有一些其他分支,在此不再详述,例如test分支(用于代码测试)、pre分支(预上线分支)等。