用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,允许您将当前版本与其每个父版本进行比较,并查看冲突是如何解决的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统使用Docker安装Drupal结合内网穿透实现远程访问管理后台

目录 前言 1. Docker安装Drupal 2. 本地局域网访问 3 . Linux 安装cpolar 4. 配置Drupal公网访问地址 5. 公网远程访问Drupal 6. 固定Drupal 公网地址 前言 作者简介: 懒大王敲代码,计算机专业应届生 今天给大家聊聊Linux系统使用Docker安装Drupal…

接口测试工具:Postman的下载安装及使用

1 Postman 介绍 1.1 Postman 是什么 Postman 是一款功能超级强大的用于发送 HTTP 请求的 测试工具 做 WEB 页面开发和测试的人员常用工具 创建和发送任何的 HTTP 请求(Get/Post/Put/Delete...) 1.2 Postman 相关资源 1.2.1 官方网站:https://www.postman.com/ …

CCIG 2024:合合信息文档解析技术突破与应用前景

目录 背景当前大模型训练和应用面临的问题训练Token耗尽训练语料质量要求高LLM文档问答应用中文档解析不精准 合合信息的文档解析技术1. 具备多文档元素识别能力2. 具备版面分析能力3. 高性能的文档解析4. 高精准、高效率的文档解析文档多板式部分示例 文档解析典型技术难点元素…

基于Java的KTV点歌系统

开发语言:Java 数据库:MySQL 技术:JSP技术,JAVA,B/S架构 工具:浏览器(360浏览器、谷歌浏览器、QQ浏览器等),数据库管理工具(MySQL) 系统展示 …

GPT-4o:人工智能技术的新巅峰

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

DBeaver连接Oracle报错:ORA-12514

Listener refused the connection with the following error:ORA-12514, TNS:listener does not currently know of service requested inconnect descriptor ———————————————— 1.报错信息2.配置正确结语 ———————————————— 如果是第一次连接Or…

IP地址开启HTTPS方法

可以使用IP地址申请SSL证书,申请之前必须是公网IP地址,不支持内网IP地址申请。 申请过程需要确定IP地址外网可以访问,这里特别注意只是申请过程中可以访问。访问验证过程必须采取80端口、443端口两者选择1个,不可以用其它端口进行…

「手把手prompt1」相关介绍

「手把手prompt1」相关介绍 在人工智能领域迅速发展的当下,“prompt” 这个术语正逐渐成为焦点。本文将带您深入了解prompt的本质,以及它如何影响我们与AI系统的互动。您将学习到,通过精确的指令设计,可以引导AI系统产出精确和有…

使用Minikube+docker+harbor+k8s自动化部署 @by_TWJ

目录 1. 开始1.1. 环境1.2. 测试的git仓库1.3. 离线文件1.4. 安装docker1.5. 安装docker-compose(非必要)1.6. 安装Jenkins1.7. 安装harbor1.8. 允许docker通过http访问私有仓库1.9. 修改/etc/hosts,追加自定义域名1.10. 安装Minikube 2. min…

【JavaScript】ECMAS6(ES6)新特性概览(一):变量声明let与const、箭头函数、模板字面量全面解析

🔥 个人主页:空白诗 🔥 热门专栏:【JavaScript】 文章目录 🌿 引言一、 let 和 const - 变量声明的新方式 🌟📌 var的问题回顾📌 let的革新📌 const的不变之美 二、 Arro…

CasaOS玩客云安装全平台高速下载器Gopeed并实现远程访问

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Spring-Cloud-CircuitBreaker-Resilience4j (3.1.1)

介绍 Resilience4j 是一个专为函数式编程而设计的轻量级容错库。Resilience4j 提供高阶函数(装饰器),以增强任何功能接口、lambda 表达式或方法引用,包括断路器、速率限制器、重试或隔板。您可以在任何函数接口、lambda 表达式或…

每日复盘-20240530

今日重点关注: 20240530 六日涨幅最大: ------1--------300637--------- 扬帆新材 五日涨幅最大: ------1--------300637--------- 扬帆新材 四日涨幅最大: ------1--------300637--------- 扬帆新材 三日涨幅最大: ------1--------301129--------- 瑞纳智能 二日涨…

Stable Diffusion AI绘画:从创意词汇到艺术图画的魔法之旅

文章目录 一、Stable Diffusion的工作原理二、从提示词到模型出图的过程三、Stable Diffusion在艺术创作中的应用《Stable Diffusion AI绘画从提示词到模型出图》内容简介作者简介楚天 目录前言/序言本书特色特别提示 获取方式 在科技的飞速发展中,Stable Diffusion…

读取YUV数据到AVFrame并用多线程控制帧率

文件树: 1.xvideo_view.h class XVideoView { public:// 像素格式枚举enum Format { RGBA 0, ARGB, YUV420P };// 渲染类型枚举enum RenderType { SDL 0 };// 创建渲染对象的静态方法static XVideoView* Create(RenderType type SDL);// 绘制帧的方法bool DrawF…

Word下一页怎么操作?6个操作方法分享!

在使用Word进行文档编辑时,经常需要设置分页、跳转页面或者对页面进行特定的布局调整。其中,“下一页”这一操作通常涉及到页面布局、分页符的插入、页面跳转等多个方面。 Word下一页怎么操作?很简单,方法已经准备好啦&#xff0…

Python代码:二十五、有序的列表

1、题目 创建一个依次包含字符串P、y、t、h、o和n的列表my_list,先使用sorted函数对列表my_list进行临时排序,第一行输出排序后的完整列表,第二行输出原始的列表。再使用sort函数对列表my_list进行降序排序,第三行输出排序后完整…

20240531瑞芯微官方Toybrick TB-RK3588开发板在Debian11下的关机尝试

20240531瑞芯微官方Toybrick TB-RK3588开发板在Debian11下的关机尝试 2024/5/31 9:10 https://t.rock-chips.com/forum.php?modforumdisplay&fid51 在Toybrick的论坛以关键词搜索:关机 可以找到抱怨这个的人很多! (一)【失败…

深入分析 Android Service (三)

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

linux nohup命令详解:持久运行命令,无视终端退出

nohup (全称为 “no hang up”),用于运行一个命令,使其在你退出 shell 或终端会话后继续运行。 基本语法 nohup command [arg1 ...] [&> output_file] &command 是你想要运行的命令。[arg1 ...] 是该命令的参数。&am…