用Idea 解决Git冲突

news2024/10/5 17:21:30

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.coloradmin.cn/o/1717683.html

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

相关文章

深入分析 Android Service (一)

文章目录 深入分析 Android Service (一)1. Android Service 设计说明1.1. Service 的类型1.2. Service 的生命周期1.3. 创建和启动 Service1.4. 绑定 Service1.5. ServiceConnection1.6. 前台 Service1.7. IntentService示例:创建和使用 IntentService 2. Service …

视频汇聚EasyCVR平台GA/T 1400视图库应用:助力社会治安防控效能提升

在信息化、智能化的时代浪潮下,公安视频图像信息应用系统的发展与应用显得尤为重要。GA/T 1400标准,全称为《公安视频图像信息应用系统》,作为公安行业的一项重要标准,其视图库的应用在提升公安工作效能、加强社会治安防控等方面发…

通过强化学习彻底改变大型数据集特征选择

文章目录 一、说明二、强化学习:特征选择的马尔可夫决策问题三、用于使用强化学习进行特征选择的 python 库3.1. 数据预处理3.2. 安装和导入FSRLearning库 四、结论和参考文献 一、说明 了解强化学习如何改变机器学习模型的特征选择。通过实际示例和专用的 Python 库…

TrueNAS开启SSH登录ROOT

简介: 从 SCALE Bluefin 22.12.0 开始,为了加强安全性并遵守联邦信息处理标准 (FIPS),root帐户登录已被弃用。所有 TrueNAS 用户都应创建具有所有必需权限的本地管理员帐户,并开始使用它来访问 TrueNAS。当根用户密码被禁用时,只有管理用户帐户才能登录 TrueNAS Web 界面。…

[Linux]重定向

一、struct file内核对象 struct file是在内核中创建,专门用来管理被打开文件的结构体。struct file中包含了打开文件的所有属性,文件的操作方法集以及文件缓冲区(无论读写,我们都需要先将数据加载到文件缓冲区中。)等…

#centos7搭建php8+nginx环境#

场景:为了实现上传的pdf文件转成png图片,需要搭建一个php8nginx的运行环境,最后安装imagic扩展 安装顺序 php-> linux-> imagemagick -> ghostscript -> imagick 一:安装phpnginx环境 1、安装remi扩展源 remi源是Remi repository是包含最新…

消安一体化解决方案

前言 随着信息技术的飞速发展,物联网技术正以前所未有的速度渗透至生活的各个角落,其中智能家居作为物联网技术应用的重要场景之一,不仅提升了居住的便捷性,更是对家庭安全提出了新的挑战和要求。在这样的背景下,将消防…

161.二叉树:在每个树中找最大值(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

易联众智能自动办理平台,AI赋能让数字政务服务“触手可及”

“城乡居民参保怎么办”“要去XX省工作了,帮我办理异地就医备案”……通过口语化的文字、语音提问,易联众智能自动办理平台的AI助理都可以准确理解对话,并依据政策文件给出详细回答,人机对话像聊天一样轻松。 近日,宁德市民王先生高兴地说:“过去办理医保业务不懂流程,容易走弯…

第22讲:文件操作

文章目录 第22讲:文件操作1. 为什么使用文件2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件?4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开和关闭 5. 文件的顺序读写5.1 顺序读写函数介…

文刻创作ai工具

文刻创作AI工具是一种利用人工智能技术来辅助创作文本的工具。 领取激活方式:https://qvfbz6lhqnd.feishu.cn/wiki/HsY4wmoffiNp4FkB2AbcpL4tn6d 它能够生成、修改、编辑和优化各种类型的文本内容,包括文章、故事、诗歌、广告文案等。 通过分析大量的文…

比较好的Python课程

最近在学习夜曲编程的Python进阶课程——办公效率化;夜曲编程之前有推出一款学习Python的入门课程,在手机端和电脑端都可以学习的,如果没有时间在手机端学习都很好的。每节课程学习下来,可以收集到Python入门的知识卡片&#xff0…

全志H616 通过Cedrus和v4l2_request API实现硬件编解码加速(香橙派zero2)

编译安装或加载cedrus驱动模块,加载v4l2-mem2mem Sunxi-Cedrus 致力于为全志 SoC 提供硬件加速的视频解码和编码支持,并将其引入主线 Linux 内核。此外,还为典型的基于 GNU/Linux 的系统提供了与内核驱动程序接口的其他用户空间组件。 Sunx…

Java使用Hutool工具类轻松生成验证码

👩🏽‍💻个人主页:阿木木AEcru 🔥 系列专栏:《Docker容器化部署系列》 《Java每日面筋》 💹每一次技术突破,都是对自我能力的挑战和超越。 目录 一、效果展示1.1 扭曲干扰的验证码1.…

C++学习第十一天——vector的模拟实现

✨ 生于火焰,落俗不可避免,但浪漫至死不渝 🌏 📃个人主页:island1314 🔥个人专栏:C学习 🚀 欢迎关注:👍点赞 &…

白玉兰之争王一博vs王阳谁将摘得男主荣耀

白玉兰之争:王一博VS王阳,谁将摘得男主荣耀?在这个星光璀璨的夜晚,白玉兰奖的提名名单犹如一道耀眼的闪电,点燃了娱乐圈的硝烟。其中,王一博与王阳入围白玉兰男主角的消息更是引发了热议狂潮。两位实力派演…

使用pytorch构建ResNet50模型训练猫狗数据集

数据集 1.导包 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader from torchvision import datasets, transforms, models import numpy as np import matplotlib.pyplot as plt import os from tqdm.auto import t…

iOS ------ 多线程 GCD

一,GCD简介 GCD是Apple开发的一个多线程的较新的解决方案。它主要用于优化应用程序以支持多核处理器以及其他对称处理系统。它是一个在线程池模式的基础上执行的并发任务。 为什么要使用GCD? GCD!可用于多核的并行运算GCD会自动利用更多的…

dockers安装mysql

1.dockerhub上搜索自己需要安装得镜像版本 dockerhub网址:https://hub-stage.docker.com docker pull mysql:5.7 #下载自己需要得版本2.启动容器实例,并且挂载容器数据卷 docker run -d -p 3306:3306 --privilegedtrue \ -v /home/mysql/log:/var/log/…

模拟 CMOS 逆变器的开关功耗

我们不会进一步讨论静态功耗。相反,本文和下一篇文章将介绍 SPICE 仿真,以帮助您更全面地了解逆变器的不同类型的动态功耗。本文重点讨论开关功率——输出电压变化时电容充电和放电所消耗的功率。 LTspice 逆变器实施 图 1 显示了我们将使用的基本 LTsp…