Vscode: 支持类似 IntelliJ、WebStorm 的 Git 冲突解决工具

创建于 2017-10-31  ·  91评论  ·  资料来源: microsoft/vscode

IntelliJ 和所有其他基于 IntelliJ 的 IDE,例如 WebStorm,支持 git merge 的冲突解决工具,它以三列显示冲突:

  • 本地更改的第一列
  • 从服务器更改的第三列
  • 冲突解决结果的第二列

请看我的附件。
merge-conflict-resolution

我发现解决冲突对我们来说超级容易,因为我可以在同一窗口上比较本地更改和服务器更改,我可以立即看到解决结果。

我们可以支持吗?

feature-request merge-conflict

最有用的评论

这将是一个非常酷的功能,我在日常工作中使用VSCode ,但由于它的交互性和易用性,当我需要解决合并冲突时,我经常使用WebStorm

所有91条评论

这将是一个非常酷的功能,我在日常工作中使用VSCode ,但由于它的交互性和易用性,当我需要解决合并冲突时,我经常使用WebStorm

有这方面的消息吗? 这个功能会很棒。 一方面,VS 代码中有一个差异工具(即比较两个文件),但您无法编辑/选择要保留的内容; 另一方面,有一个合并冲突工具,允许选择要保留的内容(当前更改/他们的更改)。 现在,最好的办法是将两种工具合二为一,例如@uyhung 建议的工具。

我还想补充一点,对于任何来到这里的贡献者:VS Code 是一款了不起的软件,请继续坚持:)!

这将是一个了不起的功能……有什么消息吗? 有没有人推荐一些做类似事情的扩展?

我在 PyCharm 上使用它。 如此惊人的功能,它有助于避免较大合并中的错误。 所有的 linter 在处理过程中都可用,因此很容易发现错误/样式违规/未使用的变量。

如果您打算实施此功能,请尽快使用 :)

为这个点赞👍。 这是唯一阻碍我完全切换到 VSCode 的事情。 会非常有帮助和方便。

在您实现此功能的那一天,我将停止使用 webstorm。

不仅为了解决冲突,这个设计也应该可以用来查看历史文件。

git config merge.conflictStyle diff3今天你有了这个,但使用 VSCode 的编辑器内布局 - 这比弹出一个对话和一个新窗口来查看你已经打开 IMO 的文件要好得多!

任何新闻? 可能是预定的,还是计划预定的?

是的,确实需要

这是非常需要的功能,我使用 inteliij 想法只是为了解决冲突。

+1,这太棒了!

+1在这里! 试图进行切换,但 IMO 这是从 WebStorm 切换到 VSCode 所缺少的主要功能之一

我们可以停止+1 评论吗? 它不会给谈话带来任何影响。
只需看这个线程并等待...

@Zielak +1 让我们停止添加更多评论

任何人都知道是否有任何插件可以使这成为可能?

@rajjejosefsson正如我上面所说,您可以设置:( git config merge.conflictStyle diff3 )

[merge]
  conflictStyle = diff3

看到他们/普通/我们。 它不会更改 VSCode 格式/主题,但是您会将这三个部分添加到您的差异中,而不是像 (git) 默认值那样只是它们/我们。

除非 JetBrains IDE 提供的其他东西(除了打开多个对话只是为了返回查看您已经打开的文件中的差异),我在这里遗漏了?

新发布的Sublime Merge也有类似的实现。

这将是一个非常酷的功能,我在日常工作中使用VSCode ,但由于它的交互性和易用性,当我需要解决合并冲突时,我经常使用WebStorm

您可以在 .gitconfig 文件中添加这些配置,并在出现冲突时在终端上键入“git mergetool”。 它只会从 webstorm 为每个文件打开您的合并 gui 界面。

[mergetool "webstorm"]
    cmd = webstorm merge $(cd $(dirname "$LOCAL") && pwd)/$(basename "$LOCAL") $(cd $(dirname "$REMOTE") && pwd)/$(basename "$REMOTE") $(cd $(dirname "$BASE") && pwd)/$(basename "$BASE") $(cd $(dirname "$MERGED") && pwd)/$(basename "$MERGED")
    trustExitCode = true
[merge]
    tool = webstorm

+1 在这里,现在是我使用 webstorm 的唯一原因!

+1

+1

的确,VS Code 非常棒,除了缺少这个 UI 工具。

+1,这正是我期望合并工具的样子。
而#5770 应该是这样实现的。

+1 与 WebStorm 相比,这是我在使用 VSC 时真正缺少的唯一功能。

我也非常喜欢这个实现,这是我在 VS 代码中看到的唯一一个完整的 IDE

好吧,既然 Webstorm 似乎是唯一真正的解决方案,我现在要去下载它。
真的很期待 VSCode 支持这个功能!!

另外,有人可以为我否决这篇文章吗? 谢谢:P

这个功能还在开发中吗?

+1,如果实施,完全会使用它

我添加了一个新的设置和命令来稍微改进合并冲突的解决,这是合并https://github.com/microsoft/vscode/pull/74231后的体验

首先添加了一个新设置merge-conflict.diffViewContext以显示围绕冲突的上下文

之前:没有围绕差异的上下文
compare-withoutcontext

之后:用"merge-conflict.diffViewContext": 3
compare-with-context

其次,引入了一个新命令Compare All来显示当前工作区和传入更改之间的完整比较,您可以通过它来比较磁盘上的旧内容、传入内容和最新的本地内容

compare-all

编辑区需要做更多的工作来支持JetBrains的风格,比如从冲突中打开一个三栏的编辑器组。 但我仍然想听听您对上述当前解决方案的反馈。

这很酷。 您能否逐行选择要合并到新文件中的更改,还是只是一个文件或另一个文件? 逐行或全部都很棒!!!

如果您可以逐块接受来自任一文件的每个更改并合并到可能涵盖大多数用例的第三个文件中。 例如,如果一个文件有 3 个更改,另一个文件有 4 个更改,我可以选择任何我想要的。 比如接受一个文件的 2 个更改和另一个文件的 2 个更改。 它可以这样做吗? 如果是这样……那太棒了!

@rebornix附加上下文很好,我喜欢比较所有内容,但对我来说仍然缺少一些东西:

  1. 将每个“侧面”与公共基础进行比较——虽然 3 路合并视图可能是最好的,但这至少可以在此期间有所帮助(我一直在尝试在 GitLens 中为此添加一些东西)
  2. 能够在比较视图中进行编辑并将更改同步回文档——这是在更好的合并被引入核心之前讨论过的事情。 这是一个关于它的请求(尽管最初的请求已经消失了 :cry :) https://github.com/microsoft/vscode/issues/10547#issuecomment -300201327'

# 2 今天可能可以使用自定义文件系统提供程序完成(尽管这感觉有点矫枉过正)

@eamodio

将每个“侧面”与公共基础进行比较——虽然 3 路合并视图可能是最好的,但这至少可以在此期间有所帮助(我一直在尝试在 GitLens 中为此添加一些东西)

这需要添加一个新的三向差异视图(三向差异算法和三列编辑器),但它是可行的。 对于#2,我认为自定义文件系统提供程序是正确的方法,因为磁盘上的文件内容包含合并冲突(如>>>>>>, <<<<<< ),同时从差异视图中选择内容更改,我们不希望弄乱磁盘上的文件,因此它已经是一个虚拟文件系统提供程序。

非常需要这个功能。

@rebornix我喜欢这个想法,我认为它比打开 3 列编辑器更好,因为笔记本电脑的屏幕不是很大。 我认为可以更容易地改进它,最终看起来像 Gitkracken 合并工具,在顶部编辑器上显示上下文并允许在底部编辑 reluting 文件(当前具有 >>>><<<< ...) .
merge-tool@2x

是的,通常当出现合并冲突时,我会切换到 PHPStorm,即使我在 VSCode 中完成的项目的其他工作也是如此。 奇怪的是,两年过去了,仍然没有合适的合并。

@rebornix我喜欢这个想法,我认为它比打开 3 列编辑器更好,因为笔记本电脑的屏幕不是很大。 我认为可以更容易地改进它,最终看起来像 Gitkracken 合并工具,在顶部编辑器上显示上下文并允许在底部编辑 reluting 文件(当前具有 >>>><<<< ...) .

我不同意,三列布局是使 Webstorm one 如此出色的部分原因。 它保持了一个非常整洁的概览

同样在这里,我总是切换到 IntelliJ 来解决合并冲突。 “解决简单冲突”魔杖工具也节省了很多时间!

我改回 Visual Studio 2017 以解决冲突...

在星期二,2019年6月25日在8:35 AM的FabB [email protected]写道:

同样在这里,我总是切换到 IntelliJ 来解决合并冲突。
“解决简单冲突”魔杖工具也节省了很多时间!


您收到此消息是因为您订阅了此线程。
直接回复本邮件,在GitHub上查看
https://github.com/microsoft/vscode/issues/37350?email_source=notifications&email_token=AAEN6O3LOPBVEY7PMABVNRDP4I3KZA5CNFSM4EBV5J4KYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXWSJ500000000000000000000000000500000000400000 ;同样
或静音线程
https://github.com/notifications/unsubscribe-auth/AAEN6O4AO24V4GB24EWOJGDP4I3KZANCNFSM4EBV5J4A
.

vscode 必须改git 冲突工具,因为vscode 在解决冲突的同时增加了<<< , === ,导致语言语法错误

@SupinePandora43这不是 VSCode,这就是 git 处理冲突的方式,它将<<<===到冲突行中。 WebStorm 解析这些块并创建用于合并的出色可视化工具。

@vedmant那么... vscode 需要一些解析器

@minkir014检查顶部原始评论上的附加图片,这是每个人的意思。

这是在 vs 代码提示和技巧中,这意味着它内置于 vs 代码中。 那么,为什么这个问题仍然是开放的?

@minkir014我将再次链接原始评论中的图像,因为您显然在考虑不同的事情: https :

@minkir014现在 VS 代码中的内容与 IntelliJ 的功能完全不同,只需比较一下: https : //user-images.githubusercontent.com/1470309/32250860-c677e4ce-bec0-11e7-82b5-0196d981cc28.png和您发布的内容https://github.com/Microsoft/vscode-tips-and-tricks/blob/master/media/resolve_merge_conflicts.gif你看到很多相似之处吗?

@minkir014因为内置功能与我们在此线程中讨论的不同。

三路合并是唯一阻止我使用 VSCode 作为我唯一 IDE 的功能。

三路合并是唯一阻止我使用 VSCode 作为我唯一 IDE 的功能。

我听到了。 这是我们需要拥有的杀手级功能。 出于这个原因,我必须保留 PHPStorm。

我花了一段时间才意识到,您在来自上述线程的更新中包含了大部分_need_ 内容,只是显示不美观,也不能进行任意的3 向差异(将来由 GitLens 使用任意毫无疑问,提交差异和祖先选择)。

当您希望能够理解两个不同更改的上下文时,以下配置更改比默认 VSCode/Git 设置更好地涵盖了大多数现实世界的合并冲突上下文化需求,同时协调它们的差异。 因此,对于未来的搜索者:

  1. 通过将您的 git 冲突样式更改为 diff3,可以显示两个差异的共同(不同)祖先。 通过编辑您的 ~/.gitconfig 或使用 cli 来执行此操作: git config merge.conflictStyle diff3
  2. 将 Diff View Position 的 VSCode 设置设置为“Below”或“Beside” "merge-conflict.diffViewPosition": "Below"

恭喜,您现在可以将两个差异的上下文视为静态引用、它们都从其分支的公共基础,同时仍然使用内联比较对所有三个上下文(祖先、分支 A 和分支 B)进行编辑。 它现在是一个穷人的 vimdiff。

(添加一个静态窗格来显示没有突出显示的共同祖先差异将是一个简单的结果,不需要主要编辑器或差异算法更新,谈到 vimdiff)

如果这些不是 GIT 中的变化? (我正在使用 perforce,我现在别无选择。)

重复 #25887

这是一个两列视图。 这是一个三列视图。

重复 #25887

这是一个两列视图。 这是一个三列视图。

我认为将这些问题联系在一起是值得的,因为这是同样的问题。
两列或三列是解决方案的一部分。
附带说明一下,我链接的动机是从这两个问题中获得吸引力并尽快添加缺失的行为 - 我真的很想使用该功能☺

但这里有 427 票反对 310 票(#25887)。 如果您已经想合并,也许您可​​以合并计票。 此功能将是前 10 名

实现有效且用户友好的 IntelliJ 样式 3 窗格合并(有时称为三向合并,但它是将两个文件合并到一个结果窗格中)将使 VS Code 编辑器产品处于世界之巅。 我确信这一点 - 其中一些线程和许多评论讲述了人们仅仅因为缺少此功能而“坚持”他们的 Intellij 产品的故事。 我不知道如何更好地激发功能请求或为产品所有者/开发人员提供更明确的优先级。 关于您(开发人员,VS 代码经理)对此有何想法的任何消息?

有些人提到已经实现的功能有多接近 VS Code 达到预期结果的事实,只是告诉我,如果大部分工作已经完成,那么一直实现它不应该真的那么苛刻。

这正是我仍然使用 Meld 作为我的合并工具的原因

这正是我仍然使用 Meld 作为我的合并工具的原因

Sublime 合并远比合并好

这正是我仍然使用 Meld 作为我的合并工具的原因

Sublime 合并远比合并好

我同意,虽然我不认为这是讨论什么合并工具是最好的地方。

是否至少可以显示当前和传入更改的共同基础?

@ackvf是的,您可以使用三向差异

那么,有什么新鲜事?

也等一下,有空的人请注意我

等待同样的......拥有那个工具会很棒

也许我也应该得到 IntelliJ :)

+1 在这里,现在是我使用 webstorm 的唯一原因!
+1
等待同样的......拥有那个工具会很棒
也许我也应该得到 IntelliJ :)

请停止向此票的所有订阅者发送非相关消息的垃圾邮件。

看看这个https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph#review -details 。 我认为这个扩展几乎具有与 Webstorm IDE 相似的功能。

这是我不使用 vscode 作为主编辑器的主要原因。 很高兴看到这一点被添加,因为内置的 git 集成和合并在 WebStorm 中更有帮助。 很高兴看到这个添加。

我的生活中需要这个。

没有关于此功能的消息? 甚至插件都可以:D ??

vscode 很棒,但确实仍在使用 Intellij 合并工具仅用于此目的..)

我们所有的新闻都是 2020 年路线图,其中提到了“完全合并支持(3 路)”: https :

天啊! VSCode 真是一个大小姐。 我想知道开发人员如何在没有此功能的情况下生存。 我将为此求助于 Webstorm

检查了 Visual Studio Code 的 Git Graph 扩展,但仍然不是该功能。 除了与 pycharm 有选择性的合并版本之外,我都使用 vscode。

_仍然_ 使用 IntelliJ 进行合并。 还有提交面板,我们可以在其中选择要保留同一文件中的哪些提交。 等😐

伙计,我 3 年前创建了这个请求 :)

虽然 VSCode 很棒,但我仍然需要使用 Webstorm 来处理 Git 相关的任务:(

我在等它

为什么还是不支持这个? 市场上有没有vscode插件起到同样的作用?

@sshsu
我可能错了,但我认为限制因素是缺少编辑器功能。 如果有可能写一个插件,那么已经有一个了

我可能错了,但我认为限制因素是缺少编辑器功能。 如果有可能写一个插件,那么已经有一个了

的种类。 我开始在空闲时间实现一个合并插件,我发现唯一真正缺少的是https://github.com/microsoft/vscode/issues/85682

然而,我真的很感谢开源 ide vscode 😍 所以我会对将添加的一切感到高兴 - 也许我们今年甚至会看到这个功能,因为它是2020 年路线图的一部分😍😍

这个功能会出现吗? Visual Studio 主线在 TFS 中有 3 路合并

你可能想试试我的新扩展VS Code 作为 Git Mergetool 。 由于缺乏 API,它有一些缺陷,但我还没有收到任何负面反馈,除了我自己。 然而,提议的四窗格布局甚至可能比三列布局具有一些优势。

它尚未出现在 Marketplace 中,但可以手动安装。 _现在可以在市场上买到。_

当我得到这个功能时,我会删除webstorm。

非常需要:+1:

这将是一个很棒的功能 <3

临时解决方案是使用在线工具,例如https://editor.mergely.com

几年前我在这里有一条评论和其他人说同样的话,虽然我认为替代的三向合并视图会很棒,但我现在更喜欢这种准系统方式,因为它实际上只是 git 放置的文本的一个皮肤那里。

我想说的是,对于任何使用 VSCode 的人来说,这不应该是“阻碍者”。 尝试一下,而不是恢复到 IDEA IDE 进行 git 交互。 (我推荐的唯一扩展是 Git Graph)

此页面是否有帮助?
0 / 5 - 0 等级