ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

git冲突是如何引起的,如何解决?

2021-07-05 20:03:38  阅读:141  来源: 互联网

标签:git 修改 fix 合并 如何 hot master 冲突 分支


写在前面:

  • 我热爱技术,热爱分享,热爱生活, 我始终相信:技术是开源的,知识是共享的!
  • 你的支持是我创作的最大动力,谢谢支持!
  • 个人除了分享博客之外,也喜欢看书,写一点日常杂文和心情分享,如果你感兴趣,也可以关注关注!
  • 微信公众号:傲骄鹿先生

一、什么是分支?

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)

分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。

现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

其他版本控制系统如SVN等都有分支管理,但是用过之后你会发现,这些版本控制系统创建和切换分支比蜗牛还慢,简直让人无法忍受,结果分支功能成了摆设,大家都不去用。

但Git的分支是与众不同的,无论创建、切换和删除分支,Git在1秒钟之内就能完成!无论你的版本库是1个文件还是1万个文件。

二、什么时候会产生合并冲突?

假如说我们目前我们有两个分支master和hot_fix,目前两个分支的内容是一样的。

假设master分支修改了它的工作区的apple.txt文件,并做了提交。而hot_fix分支也修改了它的工作区的apple.txt文件,并做了提交。

这里假设master分支修改的内容和hot_fix分支修改的内容不一样。

这个时候,无论是master分支想要合并hot_fix分支,还是hot_fix分支想要合并master分支,都会合并冲突。

1. 这里我们先在master分支,修改apple.txt文件

修改的内容如下

接下来,我们切换到hot_fix分支,对apple.txt修改

修改内容如下:

这里我们注意的是一个是修改的原来版本的第7行,一个是修改的原来版本的第8行。

这里可以把master合并到hot_fix分支上,也可以把hot_fix分支合并到master分支上。

这里我就把master分支合并到hot_fix分支上

可以看到这个给出的提示,自动合并出现冲突;让我们修改冲突,然后再提交合并。

这个时候,处于合并状态,我们可以看一下

git提示,我们有未完成的合并,需要我修改冲突后,增加并提交这个文件。

而且,因为现在是一个状态(合并)没有执行完毕,是不能进入下一个状态的。可以看到我想要切换到master分支,就失败了。

三、解决冲突

冲突是因为我们两个不同版本合并时,两个版本都有的文件被修改了。

这个时候就需要两版本的作者,讨论一下,需要怎么做。

我们看一下合并失败的文件。

<<<<<< HEAD,到=======之间的内容就是本分支中最新版本中和要求合并的分支冲突的地方。

========,到>>>>>>> master之间的内容是master分支要求合并的内容和本分支HEAD指向的本地库之间的冲突。

如何修改这个文件?

首先,肯定是要删除提示信息,这三行。
同时根据两个版本作者讨论的结果,对文件内容进行修改到满意程度。最后再次提交。

假设我们修改的结果是对这两个修改都进行保留。

提交解决合并冲突

可以看到这里对合并冲突的提交不能有文件名,也就是合并冲突,如果有多个文件有冲突,必须都解决,这次的提交会是所有冲突都解决的提交。

git有log有一个非常有用的命令。可以用来查看,目前这个项目中版本的变化。同时可以以图像化的方式显示出分支创建后的版本迭代,以及最终的合并过程。

注:中间部分由缺失是因为我创建了其它分支,后面又删除了。
 

标签:git,修改,fix,合并,如何,hot,master,冲突,分支
来源: https://blog.csdn.net/cyl101816/article/details/118495045

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有