用Idea 解决Git冲突

https://intellijidea.com.cn/help/idea/resolving-conflicts.html

https://www.jetbrains.com/help/idea/resolve-conflicts.html

idea 官方文档

当您在团队中工作时,您可能会遇到这样的情况:有人对您当前正在处理的文件进行更改。如果这些更改没有重叠(也就是说,对不同的代码行进行了更改),则冲突的文件将自动合并。但是,如果相同的行受到影响,Git不能随机选择其中一方而不是另一方,并要求您解决冲突

在Git中,当您尝试执行以下操作之一时,可能会出现冲突:pull, merge, rebase, cherry-pick, unstash changes或 apply a patch。如果存在冲突,这些操作将失败,并提示您接受上游版本,选择您的版本,或合并更改:

在这里插入图片描述
当在Git级别检测到冲突时,会自动触发Conflicts对话框。

如果你在这个对话框中点击Close ,或者从命令行调用导致合并冲突的Git操作,一个Merge Conflicts节点将出现在Commit 工具窗口的Changes 视图中,并提供一个解决冲突的链接:
在这里插入图片描述
IntelliJ IDEA提供了解决局部冲突的工具。此工具由三个窗格组成:

  • 左侧窗格显示只读本地副本
  • 右窗格显示签入到存储库的只读版本。
  • 中间窗格是一个功能齐全的编辑器,其中显示解决冲突的结果。最初,此窗格的内容与文件的base revision相同,即派生两个冲突版本的版本。

在这里插入图片描述
1 修改的行
2 删除行
3 新增行
4 冲突的行

1、解决冲突

  1. Conflicts对话框中单击Merge,在Local Changes视图中单击Resolve链接,或者在编辑器中选择冲突文件并在主菜单中选择VCS | Git | Resolve Conflicts

  2. 要自动合并所有不冲突的更改,请单击工具栏上的“
    (应用不冲突的更改,Apply All Non-Conflicting Changes)按钮(应用所有不冲突的更改)。您还可以分别使用来自左侧按钮的“
    应用非冲突更改”(从左侧应用非冲突更改,Apply Non-Conflicting Changes from the Left Side)和在这里插入图片描述
    应用非冲突更改(从右侧应用非冲突更改,Apply Non-Conflicting Changes from the Right Side)来合并来自对话框左/右部分的非冲突更改。

  3. 要解决冲突,您需要选择将哪个操作(接受accept
    按钮在这里插入图片描述或忽略ignore按钮在这里插入图片描述
    )应用到左(本地)和右(存储库)版本,并在中央窗格中检查结果代码:
    在这里插入图片描述
    您还可以右键单击中间窗格中突出显示的冲突,并使用上下文菜单中的命令Resolve using LeftResolve using Right命令分别提供了从一侧接受更改和从另一侧忽略更改的快捷方式:
    在这里插入图片描述
    对于简单的冲突(例如,如果在不同的文件版本中修改了同一行的开头和结尾),则可以使用Resolve simple conflicts(Resolve简单冲突)
    按钮,该按钮允许在一次单击中合并更改。

在这里插入图片描述
这些冲突不能通过Apply All Non-Conflicting Changes操作来解决,因为您必须确保它们被正确地解决了。

请注意,中间窗格是一个功能齐全的编辑器,因此您可以直接在此对话框中更改生成的代码。

  1. 比较不同的版本以解决冲突可能也很有用。使用Compare contents按钮在这里插入图片描述
    工具栏按钮调用选项列表。注意,Base指的是本地版本和存储库版本源自的文件版本(最初显示在中间窗格中),而Middle 指的是结果版本。
  2. 在中央窗格中查看合并结果并单击Apply

2、生产力技巧

Apply non-conflicting changes automatically

您可以将IntelliJ IDEA配置为总是自动应用无冲突的更改,而不是在Merge对话框中告诉它这样做。要做到这一点,在设置Ctrl Alt S Tools | Diff Merge页面上选择“自动应用非冲突更改,Automatically apply non-conflicting changes”选项

管理中间窗格中的更改

您可以使用工具栏来管理中间窗格中的更改,当您将鼠标悬停在gutter 中的更改标记上并单击它时,该工具栏将出现。工具栏同时显示一个框,显示修改行之前的内容:
在这里插入图片描述
例如,当存在多个不冲突的更改,并且您只需要跳过其中的一个或两个更改时,使用apply所有不冲突的更改(Apply all non-conflicting changes)操作同时应用所有更改,然后使用此工具栏中的Revert操作撤消不需要的更改会更容易。

3、处理与LF和CRLF行结束相关的冲突

系统行末结束符 - 换行(Line Feed)和回车(Carriage Return)的区别
在这里插入图片描述

通常,在一个团队中工作并对同一个存储库做出贡献的人使用不同的操作系统。这可能会导致行结束的问题,因为Unix、Linux和macOS使用LF,而Windows使用CRLF来标记行结束。

IntelliJ IDEA在Diff Viewer中显示行结尾的差异,因此您可以手动修复它们。如果你想让Git自动解决这些冲突,你需要在Windows上设置core.autocrlf设置为true,在Linux和macOS上设置为input (更多详细信息,请参见处理行结束符)。

你可以通过在Windows运行git config --global core.autocrlf true手动更改配置,Linux和macOS上运行git config --global core.autocrlf input

但是,IntelliJ IDEA可以自动分析您的配置,在您准备将CRLF提交到远程存储库时发出警告,并根据您的操作系统建议设置core.autocrlftrueinput

要启用LFCRLF行分隔符的智能处理,请Ctrl Alt S打开设置对话框,并选择左侧的Version Control | Git 节点。启用“Warn if CRLF line separators are about to be committed”选项。

在你启用了这个选项之后,IntelliJ IDEA会在每次你要用CRLF分隔符提交文件时显示行分隔符警告对话框(Line Separators Warning Dialog),除非你在受影响的文件中设置了任何相关的Git属性(在这种情况下,IntelliJ IDEA假设你清楚地了解你在做什么,并从分析中排除了这个文件)。

在“行分隔符警告”对话框中,单击以下选项之一:

  • Commit As Is 忽略警告并提交带有CRLF分隔符的文件。
  • Fix and Commit 需要依据您的操作系统 将core.autocrlf属性设置为trueinput 。因此,在提交之前,将用LF替换CRLF行分隔符。

如果稍后需要查看在合并过程中冲突是如何解决的,可以在Git工具窗口Alt 9Log选项卡中找到所需的合并提交,在右侧的“Commit Details”窗格中选择存在冲突的文件,单击“Show diff”图标在这里插入图片描述
或按Ctrl d键. 有关更多信息,请参阅查看如何合并更改。

查看如何合并更改

IntelliJ IDEA允许您查看变更是如何从一个分支合并到另一个分支的,以及在合并期间冲突(如果有的话)是如何解决的:

在这里插入图片描述

  • Alt 9Git工具窗口的Log选项卡中,选择您感兴趣的合并提交。
    • 如果在合并过程中没有检测到并解决冲突,IntelliJ IDEA将在更改文件Changed Files窗格中显示相应的消息,并建议审查来自两个分支的更改:
      在这里插入图片描述
    • 从其中一个节点中选择所需的文件,然后单击工具栏上的Show Diff 在这里插入图片描述
      图标或按Ctrl D. Diff Viewer将显示一个两面板的Diff,允许您将当前版本与所选父版本进行比较。
  • 如果在合并过程中发生了冲突,“已更改文件,Changed Files”窗格将显示与冲突合并的文件列表。
    从其中一个节点中选择所需的文件,然后单击工具栏上的Show Diff在这里插入图片描述
    图标或按Ctrl D. Diff Viewer将显示一个三面板的Diff,允许您将当前版本与其每个父版本进行比较,并查看冲突是如何解决的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/19482.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ps系统教程03

选区工具的组合使用 先用魔棒将大致区域点击圈主 会发现一些零散的小区域 使用套索工具进行区域的加减(按住shift/alt键进行相关区域加减) 可以放大查看 基本处理完细节之后 如果把不用的填充背景直接按delete删除,那么原版图案就会…

Hadoop3:MapReduce的序列化和反序列化

一、概念 1、序列化 就是把内存中的对象,转换成字节序列 (或其他数据传输协议)以便于存储到磁 盘(持久化)和网络传输。 2、反序列化 就是将收到字节序列(或其他数据传输协议)或者是磁盘的持…

LeetCode-47 全排列Ⅱ

LeetCode-47 全排列Ⅱ 题目描述解题思路代码说明 题目描述 给定一个可包含重复数字的序列 nums ,按任意顺序 返回所有不重复的全排列。 示例 : 输入:nums [1,1,2]输出: [[1,1,2], [1,2,1], [2,1,1]] b站题目解读讲的不好&…

部署k8s的DashBoard

1. 部署 Dashboard UI [rootk8s-master ~]# kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recomme nded.yaml一般上面的网站访问不了 可以下载我上传的资源DashBoard的recommended.yaml vim recommended.yaml 复制粘贴我上…

做外贸,怎么选国外服务器?

不管是新手还是外贸老司机,大家都知道要用海外服务器来做外贸网站,无论外贸独立站的客户是欧美、东南亚、还是非洲,都不能选择国内机房的服务器,必须选择海外服务器,这是共识。 但是今天,我要告诉大家一个…

Java Apache Jaccard文本相似度匹配初体验

文章目录 前言一、文本相似度算法的选择二、常见的文本相似度算法介绍三、使用示例1、引入jar包2、方法示例3、Jaccard源码剖析4、Jaccard源码解释 写在最后 前言 产品今天提了个需求,大概是这样的,来,请看大屏幕。。。额。。。搞错了&#…

Spring Boot 2 入门基础

学习要求 ● 熟悉Spring基础 ● 熟悉Maven使用 环境要求 ● Java8及以上 ● Maven 3.3及以上:https://docs.spring.io/spring-boot/docs/current/reference/html/getting-started.html#getting-started-system-requirements 学习资料 ● 文档地址: htt…

前端从零到一开发vscode插件并发布到插件市场

前端从零到一开发vscode插件并发布到插件市场 背景目标成果展示一条龙实现过程安装插件脚手架和工具创建项目运行调试打包第一次打包前的必要操作 发布第一次发布前账号准备注册Azure DevOps发布账号-获取token注册vscode开发者账号终端登录vsce 发布方式2-手动上传插件 进阶开…

深入分析 Android Service (三)

文章目录 深入分析 Android Service (三)1. Service 与 Activity 之间的通信2. 详细示例:通过绑定服务进行通信2.1 创建一个绑定服务2.2 绑定和通信 3. 优化建议4. 使用场景5. 总结 深入分析 Android Service (三) 1. Service 与 Activity 之间的通信 在 Android …

115道MySQL面试题(含答案),从简单到深入!

1. 什么是数据库事务? 数据库事务是一个作为单个逻辑工作单元执行的一系列操作。事务具有ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性&#xf…

手机站怎么推广

随着手机的普及和移动互联网的快速发展,越来越多的人开始使用手机进行在线购物、社交娱乐、阅读资讯等,同时也催生了越来越多的手机站的出现。但是,在海量的手机站中,要让自己的手机站脱颖而出,吸引更多用户访问和使用…

CSS 【实战】 “四合院”布局

效果预览 页面要求: 上下固定高度左右固定宽度中间区域自适应宽高整个页面内容撑满全屏,没有滚动条 技术要点 使用 html5 语义化标签 header 网页内的标题区域nav 导航区域aside 侧边栏footer 页脚区域section 内容分区article 文章区域 清除浏览器默…

微信小程序区分运行环境

wx.getAccountInfoSync() 是微信小程序的一个 API,它可以同步获取当前账号信息。返回对象中包含小程序 AppID、插件的 AppID、小程序/插件版本等信息。 返回的对象结构如下: 小程序运行环境,可选值有:develop(开发版&…

主备切换大揭秘:保证系统永不停机的秘密

Hello,大家好!我是小米,一个积极活泼、热爱分享技术的小伙伴。今天我们来聊聊一个很重要的主题:分布式分区容错性中的主备切换。无论你是一个经验丰富的开发者,还是刚刚入门的小白,这篇文章都将为你揭开分布式系统的神秘面纱,带你深入了解其中的关键技术。让我们开始吧!…

【赠书第26期】AI绘画教程:Midjourney使用方法与技巧从入门到精通

文章目录 前言 1 Midjourney入门指南 1.1 注册与登录 1.2 界面熟悉 1.3 基础操作 2 Midjourney进阶技巧 2.1 描述词优化 2.2 参数调整 2.3 迭代生成 3 Midjourney高级应用 3.1 创意启发 3.2 团队协作 3.3 商业应用 4 总结与展望 5 推荐图书 6 粉丝福利 前言 在…

污水净化之旅:可视化技术揭秘城市“血液”的循环奥秘

在繁华的都市背后,有一个默默守护着我们的“肾脏”——污水处理厂。它悄无声息地处理着每天产生的污水,确保我们的生活环境洁净美好。但你知道这个“肾脏”是如何工作的吗?今天,就让我们一起走进污水处理的神秘世界,通…

Leetcode:寻找两个正序数组的中位数

题目链接:4. 寻找两个正序数组的中位数 - 力扣(LeetCode) 题目分析 1、当只有一个有序数组时,该数组的中位数会将该数组分为两份:左子数组 和 右子数组 2、当有两个有序数组时, 我们仍然可以通过一条分隔…

社区供稿丨GPT-4o 对实时互动与 RTC 的影响

以下文章来源于共识粉碎机 ,作者AI芋圆子 前面的话: GPT-4o 发布当周,我们的社区伙伴「共识粉碎机」就主办了一场主题为「GPT-4o 对实时互动与 RTC 的影响」讨论会。涉及的话题包括: GPT-4o 如何降低延迟(VAD 模块可…

LabVIEW中进行步进电机的位置控制

在LabVIEW中进行步进电机的位置控制,通常涉及以下几个关键步骤:设置硬件、配置通信、编写控制算法和实施反馈控制。以下是一个详细的介绍。 硬件设置 步进电机:选择合适的步进电机,根据负载和应用需求选择适当的步数和转矩。 驱…

FL Studio21.2.8中文版让你的音乐创作如鱼得水

在音乐的世界里,我们都是探索者,追求着无尽的创新和可能性。而在这个过程中,我们往往会遇到各种挑战和困扰。如何快速高效地创作出满意的音乐作品?如何将我们的创意完美地呈现出来?这些问题可能一直困扰着你。今天&…