PyCharm 2025.3 Help

解决 Git 冲突

当您在团队中工作时,可能会遇到有人将更改推送到您当前正在处理的文件的情况。 如果这些更改不重叠(即更改发生在不同的代码行),冲突的文件会自动合并。 但是,如果影响到了相同的行,Git 无法随意选择一方,而是会要求您解决冲突。

在 Git 中,当您尝试执行以下操作之一时,可能会产生冲突: pullmergerebasecherry-pickunstash changesapply a patch。 如果存在冲突,这些操作将失败,并提示您接受上游版本、偏好您的版本或合并更改:

文件合并时发生冲突

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

如果您在此对话框中点击 关闭 ,或从命令行调用会导致合并冲突的 Git 操作,则在 提交 工具窗口的 更改 视图中会出现一个 合并冲突 节点,并提供用于解决冲突的链接:

本地更改视图中的合并冲突节点

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

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

  • 右侧窗格显示检入存储库的只读版本。

  • 中间窗格是一个功能完备的编辑器,用于显示解决冲突的结果。 最初,此窗格的内容与文件的 基准版本 相同,即两个发生冲突的版本所派生自的版本。

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

  2. 已删除的行

  3. 新添加的行

  4. 冲突的行

解决冲突

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

  2. 要自动合并所有非冲突更改,请点击工具栏上的 应用非冲突更改按钮应用所有非冲突更改)。 您也可以使用 从左侧应用非冲突更改按钮应用左侧的非冲突更改 )和 从右侧应用非冲突更改按钮应用右侧的非冲突更改 ),分别合并来自对话框左侧和右侧的非冲突更改。

  3. 要解决冲突,您需要选择对左侧(本地)和右侧(存储库)版本应用哪种操作(接受 接受按钮 或忽略 忽略按钮 ),并在中间窗格中检查生成的代码:

    解决冲突

    您也可以在中间窗格中右键点击高亮的冲突,并使用上下文菜单中的命令。 使用左侧解决使用右侧解决 命令分别提供从一侧接受更改并从另一侧忽略更改的快捷方式:

    冲突更改的上下文菜单

    对于简单冲突(例如,同一行的开头和末尾在不同的文件修订中被修改),将显示 解决简单冲突 解决简单冲突按钮 按钮,使您可以一键合并更改。

    解决简单冲突按钮

    此类冲突不会通过 应用所有非冲突更改 操作解决,因为您必须确保它们被正确解决。

  4. 比较不同版本以解决冲突也很有用。 使用工具栏上的 比较内容按钮 按钮以调用选项列表。 请注意, 基线 指的是本地版本和存储库版本的共同来源文件版本(最初显示在中间窗格),而 中间 指的是生成的版本。

  5. 在中间窗格中查看合并结果,然后点击 应用

效率提示

自动应用非冲突更改

您可以将 PyCharm 配置为始终自动应用非冲突更改,而不是在 合并 对话框中让其执行此操作。 为此,请在 工具 | 差异与合并 设置页面上选择 自动应用非冲突更改 选项  Ctrl+Alt+S

在中间窗格中管理更改

当您将鼠标悬停在装订区域中的更改标记上并点击它时,会显示一个工具栏,您可以使用该工具栏在中间窗格中管理更改。 该工具栏与一个显示已修改行先前内容的框架一起显示:

更改工具栏

例如,当存在多个非冲突更改且您只需跳过其中一两个时,使用此工具栏中的 应用所有非冲突更改 操作一次性应用所有更改,然后使用 还原 操作撤销不需要的更改,会更为简便。

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

经常会出现这样的情况:在团队中协作并为同一存储库做出贡献的人使用不同的操作系统。 这可能会导致行结尾问题,因为 Unix、Linux 和 macOS 使用 LF ,而 Windows 使用 CRLF 来标记一行的结尾。

PyCharm 会在 差异查看器 中显示行结尾的不一致,以便您手动修复。 如果您希望 Git 自动解决此类冲突,需要在 Windows 上将 core.autocrlf 属性设置为 true ,在 Linux 和 macOS 上设置为 input (有关详细信息,请参阅 处理行结尾)。 您可以在 Windows 上运行 git config --global core.autocrlf true 或在 Linux 和 macOS 上运行 git config --global core.autocrlf input 来手动更改配置。

但是,PyCharm 可以自动分析您的配置,当您即将把 CRLF 提交到远程存储库时发出警告,并建议根据您的操作系统将 core.autocrlf 设置为 trueinput

要启用对 LFCRLF 行分隔符的智能处理,请打开 设置 对话框 Ctrl+Alt+S ,然后在左侧选择 版本控制 | Git 节点。 启用 即将提交包含 CRLF 行分隔符时发出警告 选项。

启用此选项后,每次您即将提交包含 CRLF 分隔符的文件时,PyCharm 都会显示 行分隔符警告对话框 ,除非您已在受影响的文件中设置任何相关的 Git 属性 (在这种情况下,PyCharm 认为您清楚自己在做什么,并将此文件从分析中排除)。

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

  • 按原样提交 以忽略警告并提交带有 CRLF 分隔符的文件。

  • 修复并提交 以根据您的操作系统将 core.autocrlf 属性设置为 trueinput。 因此,在提交之前, CRLF 行分隔符将被替换为 LF

如果您在稍后需要查看在合并期间冲突究竟是如何解决的,您可以在 Git 工具窗口 Alt+9日志 选项卡中定位所需的合并提交,在右侧的 提交详细信息 窗格中选择一个包含冲突的文件,然后点击 显示差异图标 或按 Ctrl+D。 有关更多信息,请参阅 查看更改的合并方式

最后修改日期: 2025年 12月 2日