首页 文章 精选 留言 我的

精选列表

搜索[稳定],共10000篇文章
优秀的个人博客,低调大师

情绪稳定!别再让Git合并冲突影响你工作了

大家好,我是陈哥,今天想和大家聊聊Git合并冲突解决~ 背景 前几天,我正好收到了一位读者的留言:又又又又遇到了Git合并冲突,解决冲突比写代码还费劲,突然想起SVN的好。该怎么避免Git冲突啊? 我想,比如这样? 在我看来,Git合并冲突是不可避免的。在本文,我想和大家简单分享一下遇到Git冲突该如何解决,希望对大家有所帮助。在此之前,我们先来了解一下Git的合并冲突是什么以及合并冲突的类型有哪些。或者如果只对如何解决Git合并冲突感兴趣,也可以滑至第三部分直接阅读。 一、如何识别Git中的合并冲突? 在Git中,我们在两个不同的分支对同一个文件进行更改,特别是在同一文件的同一行尽心更改,会容易产生合并冲突。在这种情况下,Git无法自动解决这些更改之间的不一致性,它会暂停合并过程,并将冲突标记出来,等待我们手动解决。 举一个简单的合并冲突的示例: 在分支main中工作,并修改了mytext.txt文件的第1行,如Hi world。 切换到分支new-feature,然后对mytext.txt的第二行进行修改,如Hello earth。 当我们准备尝试将new-feature分支合并到main分支时,Git无法自动决定在Hi world和Hello earth之间接受哪一个。因此,Git会提醒合并冲突错误,并告诉我们手动解决冲突。 这时,Git会自动用小于号(<)、等号(=)和大于号(>)注释出冲突行,如下所示: <<<<<<< HEAD(Current Change) Hi world ======= Hello earth >>>>>>> new-feature(Incoming Change) 小于号(<)和等号(=)之间的内容是当前分支(Current Change)中的更改。等号(=)和大于号(>)之间的内容是我们要合并到另一个分支的分支变更。 我们可以自行删除这些注释,再决定如何处理冲突代码行。因此,我们不必将合并冲突看作绊脚石,而可以将其作为需要删除的一些注释以及需要接受或拒绝的内容。 二、Git中合并冲突的类型有那些? 常见的合并冲突有两种类型:内容冲突和结果冲突。 1、内容冲突 我们在两个不同分支上,对同一行代码进行修改,就会发生内容冲突。例如,我们在一个分支的第2行修改了display: flex,又在另一个分支的同一文件的第2行修改了text-align: center。这就是会产生内容冲突,Git会提示我们对代码进行调整。 2、结构合并冲突 结构冲突是指我们在两个不同分支上进行的修改会影响同一个文件。虽然彼此之间不发生逐行冲突,但这些更改会影响文件的结构或组织,如重命名变量、函数、移动代码块等。如果发生结构冲突,Git会提示我们想保留哪些更改。 三、如何解决Git中的合并冲突 既然我们已经了解了Git的合并冲突以及合并冲突的类型,那么我们具体来看看到底该如何解决Git中的合并冲突。 现在许多代码编辑器都能有在本地合并时,解决合并冲突的接口,我将以vscode为例子说明如何解决合并冲突。 1、如何在vscode中解决合并冲突 当我们切换到要合并的分支并运行git merge branch-to-merge时,如果存在冲突,系统会提示我们需要解决。vscode中的界面如下所示: 如果我们还没有准备好解决冲突,可以先通过运行git merge --abort来中止合并。如果想要继续解决冲突,我们有三种方式来解决冲突:接受新的更改、接受当前更改或同时接受两个更改。选择三种方式中的任何一种,就能够解决合并冲突。 2、vscode合并编辑器如何解决Git中的合并冲突 运行git merge <branch-to-merge>后,点击“打开合并编辑器”,会出现如下的三个视图: 左侧是新分支的更改,右侧是当前分支的更改,以及两者下方的预览。Incoming是我们想要合并到目标分支的分支中的更改,而current是我们想要合并到的分支中已有的更改。 在合并编辑器中,可使用以下任一方式开始解决冲突: 逐行查看冲突,通过选择复选框来选泽保留左侧还是右侧更改。 选择“接受传入”按钮以接受所有传入的更改,或选择“接受当前”按钮以保留所有存在冲突的更改的当前版本。 在“结果”窗口中手动编辑代码。 解决合并冲突后,单击“接受合并”按钮即可。 四、合并冲突并非全然是坏事 当然,如果团队在为大型代码库创建了PR,并出现合并冲突,那么还有另一种解决方法。我们可以通过运行git pull --rebase upstream main与main重新绑定。这时,我们会看到一个解决冲突的界面以及包含冲突的文件。完成后,运行git add .、git rebase --continue,然后强制推送到分支。 其实,合并冲突并非全然是坏事,这也是一次代码审查的机会。当我们掌握Git合并冲突的处理方法后,会发现团队协作会变得更加顺畅。如果你们还对Git有任何疑问,欢迎参加禅道·中国行(西安站),我们将采用游戏工作坊的形式带大家学习、了解Git。 最后,希望我的分享可以帮助到你,也欢迎给我留言与我讨论。

优秀的个人博客,低调大师

Xmake v2.9.2 发布,各种细节和稳定性改进

新特性 #5005: 显示所有 API #5003: 添加 build.fence 策略 #5060: 支持 Verilator 静态库目标构建 #5074: 添加xrepo download命令去快速下载包源码 #5086: 添加包检测支持 #5103: 添加 qt ts 构建支持 #5104: 改进 find_program,在 windows 上调用 where 改进查找 改进 #5077: 当构建 x86 目标时,使用 x64 的 msvc 编译工具 #5109: 改进 add_rpathdirs 支持 runpath/rpath 切换 #5132: 改进 ifort/icc/icx 在 windows 上的支持 Bugs 修复 #5059: 修复加载大量 targets 时候卡住 #5029: 修复在 termux 上崩溃问题

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。