IntelliJ IDEA - 如何从命令行触发Git冲突解决

6
我通常使用命令行来使用git,但是对于解决冲突,我更喜欢使用IDE。特别是IntelliJ IDEA。
目前我正在尝试rebase,并看到了冲突。所以我需要去IDEA并点击“VCS -> Git -> 解决冲突”。然后回到控制台并运行git rebase --continue
我认为我可以配置git调用一个程序来处理冲突。 有没有办法从命令行调用IDEA的冲突解决功能? 类似于idea --git-resolve-conflicts $(PWD)
也许在安装正确的插件之后?这是IDEA给我的帮助:
Usage:
  /usr/local/bin/idea -h | -? | --help
  /usr/local/bin/idea [project_dir]
 /usr/local/bin/idea [-l|--line line] [project_dir|--temp-project] file[:line]
  /usr/local/bin/idea diff <left> <right>
  /usr/local/bin/idea merge <local> <remote> [base] <merged>
2个回答

5

首先,您需要在~/.gitconfig(全局)或project/.git/config(仅适用于您的项目)中定义用于合并冲突解决的工具。

[mergetool "idea"]
    cmd = /usr/local/bin/idea merge \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
    trustExitCode = false
[merge]
    tool = idea

在正常会话中,如果在git merge命令后出现冲突,请执行以下操作:

git mergetool

我修改了trustExitCode设置,将其改为false...这样当有多个冲突文件时不会失败。 在shell中处理每个文件时,需要确认当前文件的冲突是否已解决,然后才会继续处理下一个。


谢谢。这可能就是我正在寻找的东西。 - Ondra Žižka
可以,不需要更多的指示吗? - Carlo Bellettini
看起来还不错,我已经尝试了一个冲突的文件。我需要尝试多个文件。 - Ondra Žižka
我修改了答案...将trustExitCode设置为false更好。 - Carlo Bellettini

4

1
我不明白为什么它不能找到所有的冲突?当你点击“解决冲突…”时,它确实会找到所有的冲突,然后你选择它们并点击“合并”…这基本上就是我想调用的。 - Ondra Žižka
它基于git的解析输出和内部工作流程来实现这一点。您只需在IDE中打开存储库,它就会检测到所有内容,然后调用“解决冲突”操作。但是没有办法使用单个命令行完成此操作。 - Dmitrii Smirnov
没错,@Dmitry,这就是我要找的。看来我得请求添加这个功能了。 - Ondra Žižka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接