GoLand 2025.2 Help

解决 Git 冲突

当与团队协作时,您可能会遇到某人向您当前正在处理的文件推送更改的情况。 如果这些更改没有重叠(即更改发生在不同的代码行上),则会自动合并发生冲突的文件。 但是,如果更改发生在相同行上,Git 无法随机选择其中一方,因此会要求您解决冲突。

在 Git 中,执行以下操作之一时可能会出现冲突: pullmergerebasecherry-pickunstash changesapply a patch。 如果存在冲突,这些操作将失败,并提示您接受上游版本、保留本地版本或合并更改:

包含冲突的文件合并对话框

检测到 Git 级别的冲突时,将自动触发 冲突 对话框。

如果您在此对话框中点击 关闭 ,或从命令行执行导致合并冲突的 Git 操作,则 合并冲突 节点将在 更改 视图的 提交 工具窗口中显示,并提供解决链接:

“本地变更”视图中的“合并冲突”节点

GoLand 提供用于在本地解决冲突的工具。 该工具由三个窗格组成:

  • 左侧窗格显示只读的本地副本

  • 右侧窗格显示已提交到版本库的只读版本。

  • 中央窗格是一个功能完善的编辑器,用于显示冲突解决结果。 初始时,该窗格的内容与文件的 base revision 一致,即两个冲突版本共同派生的版本。

冲突解决工具中的颜色标记
  1. 已修改的行

  2. 已删除的行

  3. 新添加的行

  4. 存在冲突的行

解决冲突

  1. 点击 合并 对话框中的 冲突解决 视图中的 本地更改 链接,或在编辑器中选择冲突文件并在主菜单中选择 VCS | Git | 解决冲突

  2. 要自动合并所有无冲突更改,请点击工具栏上的 “应用无冲突更改”按钮应用全部无冲突更改)。 您还可以使用 “从左侧应用无冲突更改”按钮应用左侧的无冲突更改 )和 “从右侧应用无冲突更改”按钮应用右侧的无冲突更改 )分别合并左侧/右侧部分的无冲突更改。

  3. 若要解决冲突,您需要选择对左侧(本地)和右侧(版本库)版本应用的操作(接受 “接受”按钮 或忽略 “忽略”按钮 ),并查看中央窗格中的结果代码:

    您也可以右键点击中央窗格中高亮显示的冲突,并使用上下文菜单中的命令。 使用左侧解决使用右侧解决 命令可快速接受一侧的更改并忽略另一侧的更改:

    冲突更改的上下文菜单

    对于简单冲突(例如,同一行的开头和结尾在不同版本中被修改),将出现允许一键合并更改的 解决简单冲突 “解决简单冲突”按钮 按钮。

    “解决简单冲突”按钮

    此类冲突不会通过 应用全部无冲突更改 操作解决,因为您需要确保冲突已正确解决。

  4. 比较不同版本以解决冲突也非常有用。 请使用工具栏上的 “比较内容”按钮 按钮来调用选项列表。 请注意, 基础 表示本地和版本库版本所基于的文件版本(最初显示在中间窗格),而 中间 表示合并后的版本。

  5. 请在中央窗格中检查合并结果,并点击 应用

提升效率的技巧

自动应用无冲突更改

您可以将 GoLand 配置为始终自动应用无冲突的更改,而无需每次在 合并 对话框中确认。 To do this, select the 自动应用无冲突更改 option on the 工具 | 差异合并 settings page  Ctrl+Alt+S.

在中央窗格中管理更改

将鼠标悬停在边栏中的更改标记上并点击后,您可以使用中央窗格中显示的工具栏来管理更改。 该工具栏将与显示已修改行原始内容的框架一起显示:

更改工具栏

例如,当存在多个不冲突的更改,并且您只需跳过其中一两个时,可以使用 应用全部无冲突更改 操作一次性应用全部更改,然后通过此工具栏中的 还原 操作撤消不需要的更改。

处理与 LF 和 CRLF 行结尾相关的冲突

团队协作并共同贡献同一版本库的人员通常使用不同的操作系统。 这可能会导致行尾符问题,因为 Unix、Linux 和 macOS 使用 LF ,而 Windows 使用 CRLF 表示行尾。

GoLand 会在 差异查看器 中显示行尾符差异,以便您手动修复。 如果您希望 Git 自动解决此类冲突,需将 core.autocrlf 属性在 Windows 上设置为 true ,在 Linux 和 macOS 上设置为 input (详细信息请参见 Dealing with line endings)。 您可以在 Windows 上运行 git config --global core.autocrlf true 或在 Linux 和 macOS 上运行 git config --global core.autocrlf input 手动更改配置。

但是,GoLand 可以自动分析您的配置,在您尝试将 CRLF 提交到远程版本库前发出警告,并建议根据操作系统设置 core.autocrlf 设置为 trueinput

若要启用对 LFCRLF 行分隔符的智能处理,请打开 首选项对话框 对话框 Ctrl+Alt+S ,然后在左侧选择 版本控制 | Git 节点。 启用 提交前警告存在 CRLF 行分隔符 选项。

启用该选项后,每当您准备提交包含 CRLF 分隔符的文件时,GoLand 都会显示 行分隔符警告对话框 ,除非受影响文件中已设置相关 Git 属性 (在这种情况下,GoLand 认为您明确了解所执行的操作并将该文件排除在分析之外)。

行分隔符警告对话框 中,点击以下任一项:

  • 按原样提交 可忽略警告并提交包含 CRLF 分隔符的文件。

  • 修复并提交 可将 core.autocrlf 属性设置为 trueinput ,具体取决于您的操作系统。 提交前, CRLF 行分隔符将被替换为 LF

如果以后需要检查在合并过程中是如何解决冲突的,您可以在 日志 标签页中找到所需的合并提交,位于 Git 工具窗口 Alt+9 ,然后在右侧的 提交详情 面板中选择有冲突的文件,并点击 “显示差异”图标 或按 Ctrl+D。 有关详细信息,请参见 Review how changes were merged

最后修改日期: 2025年 9月 26日