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

时间:2014-05-09 09:54:33

标签: sublimetext2 textmate

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分: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状态时,差异状态设置为U(未合并)和M(已修改),因此您只能过滤未合并的文件。 / p>

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

无需插入uniq

就可以工作

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

[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE