解决 Git 冲突
当与团队协作时,您可能会遇到某人向您当前正在处理的文件推送更改的情况。 如果这些更改没有重叠(即更改发生在不同的代码行上),则会自动合并发生冲突的文件。 但是,如果更改发生在相同行上,Git 无法随机选择其中一方,因此会要求您解决冲突。
在 Git 中,执行以下操作之一时可能会出现冲突: pull、 merge、 rebase、 cherry-pick、 unstash changes 或 apply a patch。 如果存在冲突,这些操作将失败,并提示您接受上游版本、保留本地版本或合并更改:

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

GoLand 提供用于在本地解决冲突的工具。 该工具由三个窗格组成:
左侧窗格显示只读的本地副本
右侧窗格显示已提交到版本库的只读版本。
中央窗格是一个功能完善的编辑器,用于显示冲突解决结果。 初始时,该窗格的内容与文件的 base revision 一致,即两个冲突版本共同派生的版本。

已修改的行
已删除的行
新添加的行
存在冲突的行
解决冲突
点击 合并 对话框中的 冲突、 解决 视图中的 本地更改 链接,或在编辑器中选择冲突文件并在主菜单中选择 VCS | Git | 解决冲突。
要自动合并所有无冲突更改,请点击工具栏上的
(应用全部无冲突更改)。 您还可以使用
(应用左侧的无冲突更改 )和
(应用右侧的无冲突更改 )分别合并左侧/右侧部分的无冲突更改。
若要解决冲突,您需要选择对左侧(本地)和右侧(版本库)版本应用的操作(接受
或忽略
),并查看中央窗格中的结果代码:
您也可以右键点击中央窗格中高亮显示的冲突,并使用上下文菜单中的命令。 使用左侧解决 和 使用右侧解决 命令可快速接受一侧的更改并忽略另一侧的更改:

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

此类冲突不会通过 应用全部无冲突更改 操作解决,因为您需要确保冲突已正确解决。
比较不同版本以解决冲突也非常有用。 请使用工具栏上的
按钮来调用选项列表。 请注意, 基础 表示本地和版本库版本所基于的文件版本(最初显示在中间窗格),而 中间 表示合并后的版本。
请在中央窗格中检查合并结果,并点击 应用。
提升效率的技巧
- 自动应用无冲突更改
您可以将 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 设置为 true 或 input。
若要启用对 LF 和 CRLF 行分隔符的智能处理,请打开 首选项对话框 对话框 Ctrl+Alt+S ,然后在左侧选择 版本控制 | Git 节点。 启用 提交前警告存在 CRLF 行分隔符 选项。
启用该选项后,每当您准备提交包含 CRLF 分隔符的文件时,GoLand 都会显示 行分隔符警告对话框 ,除非受影响文件中已设置相关 Git 属性 (在这种情况下,GoLand 认为您明确了解所执行的操作并将该文件排除在分析之外)。
在 行分隔符警告对话框 中,点击以下任一项:
按原样提交 可忽略警告并提交包含
CRLF分隔符的文件。修复并提交 可将
core.autocrlf属性设置为true或input,具体取决于您的操作系统。 提交前,CRLF行分隔符将被替换为LF。
如果以后需要检查在合并过程中是如何解决冲突的,您可以在 日志 标签页中找到所需的合并提交,位于 Git 工具窗口 Alt+9 ,然后在右侧的 提交详情 面板中选择有冲突的文件,并点击 或按 Ctrl+D。 有关详细信息,请参见 Review how changes were merged。