如何在终端窗口中打开textmate / sublime text2编辑器中git / mercurial merge期间发生冲突的文件
您可以使用以下命令在sublime文本中打开git合并冲突的所有文件:
git diff --name-only | uniq | xargs subl
我想补充一点。 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