在 PyCharm 中解决合并冲突时如何查看代码

问题描述 投票:0回答:2

假设我有一个包含 2 个文件的存储库:


来源.py

def foo() -> int:
    return 1

冲突.py

from source import foo

def bar() -> int:
    return foo()

现在,我创建并尝试解决合并冲突:


冲突.py

from source import foo

def bar() -> float:
    return foo()

我收到了预期的对话框并且能够解决冲突:


现在如何查看代码并检查

foo()
的实际返回类型?

合并冲突解决窗口固定在顶部。 Command/ctrl+单击

foo()
不起作用。即使打开我的存储库的第二个克隆也无法避免这种侵入行为。

此行为对于 macOS 和 Windows 是相同的。我使用的是 PyCharm 2022.2.3 Professional。

python pycharm merge-conflict-resolution
2个回答
0
投票

合并冲突对话框是模态的,并且模态严格限于每个应用程序。在此期间您不能执行任何代码操作。 请参阅:https://youtrack.jetbrains.com/issue/IDEA-66552/Merge-dialog-should-not-be-modal-as-well-as-side-diffs-invoked-from-it

您可以通过关闭所有窗口、转到编辑器、检查代码来检查代码。 之后,您可以通过单击“提交”选项卡中的“解决冲突”返回冲突解决。


0
投票

有一个解决方法 - 已确认版本

2022.3 Professional
2023.3 Professional

在 Dino Letic 链接的线程上引用 Dirk Moebius 的话:

我刚刚发现有一种方法可以绕过模式对话框 完全一样,但并不明显:

合并期间打开“冲突”对话框时,不要按“合并”, 请按“关闭”按钮。然后会显示合并冲突 在“提交”选项卡中名为“合并冲突”的部分中。

“合并冲突”部分有一个链接“解决...”,但不要单击 这样,它只会再次打开相同的模式对话框。相反,对于每个 冲突的文件,右键单击它并从列表中选择“合并...” 上下文弹出菜单。这将再次打开“合并”对话框,但是这 时间它仅适用于选定的文件,并且它不是模态的!你可以 切换回主 IDE 窗口并检查和编辑其他文件 那里。您可以将“合并”对话框移动到第二台显示器上并继续工作 同时打开两个窗口!

解决该文件的“合并”对话框中的所有冲突后, 单击“应用”,或单击链接“保存更改并完成” 在出现的弹出窗口中合并”。这两个操作都只是解决了 当前文件的冲突。 (文本“...并完成合并”是 这里有误导性,因为它实际上并没有完成合并 只要还有其他冲突。)

对每个文件重复这些步骤,直到解决所有冲突。

我使用的是IntelliJ IDEA 2021.2.3企业版。不知道其他有没有 版本支持这种工作流程。


第 1 步(可选)

关闭拉取后出现的冲突解决提示。


第2步

右键单击您要解析的文件,然后选择

Merge
。不要尝试通过选择蓝色
Resolve
文本来解决这将打开之前的提示,从而导致有问题的模式。而是单独解析文件。


第3步

现在您可以在检查代码时解决冲突。

© www.soinside.com 2019 - 2024. All rights reserved.