如何在textmate / sublime中的git / mercurial合并期间打开有冲突的文件

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

如何在终端窗口中打开textmate / sublime text2编辑器中git / mercurial merge期间发生冲突的文件

sublimetext2 textmate
2个回答
3
投票

您可以使用以下命令在sublime文本中打开git合并冲突的所有文件:

git diff --name-only | uniq | xargs subl

0
投票

我想补充一点。 git diff --name-only将为您提供所有具有差异的文件。这就是为什么有时它会产生重复的条目,因为它将文件标记为“已修改”以及处于合并冲突状态。将它管道化为uniq是一个很好的解决方案,但git diff --name-only还将包含您可能故意更改的文件,因此它实际上不会仅过滤具有合并冲突的文件。当你处于变基的中间时,这可能不会经常发生,虽然我会说在大多数情况下@StephanRodemeier的回答是有效的。

但是,你可以做的是利用--diff-filter选项为文件分配状态。在文档中查看更多内容

--diff-filter=[(A|C|D|M|R|T|U|X|B)…​[*]]

仅选择已添加(A),复制(C),删除(D),修改(M),重命名(R)的文件,其类型(即常规文件,符号链接,子模块,...)已更改(T),未合并(U),未知(X),或已配对破碎(B)。可以使用过滤器字符的任何组合(包括无)。当*(全部或全部)添加到组合中时,如果有任何文件与比较中的其他条件匹配,则选择所有路径;如果没有与其他条件匹配的文件,则不会选择任何内容。

当文件处于both modified状态时,diff状态设置为U(Unmerged)和M(Modified),因此您只能过滤Unmerged文件。

git diff --diff-filter=U --name-only | xargs subl

应该工作而不需要管道进入uniq

您可以考虑的另一件事是将您的编辑器设置为difftool,即VSCode documentation specifies how to do this,将其添加到您的.gitconfig

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE
© www.soinside.com 2019 - 2024. All rights reserved.