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



如何从终端窗口只打开在textmate/sublime text2编辑器中git/mercurial合并过程中有冲突的文件

你可以使用以下命令打开所有在sublime text中有git merge冲突的文件:

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)的文件。过滤字符的任何组合(包括无)都可以使用。当在组合中添加* (all or none)时,如果在比较中存在匹配其他条件的文件,则选择所有路径;如果没有符合其他条件的文件,则不选择任何文件。

似乎当文件处于both modified状态时,diff状态被设置为U(未合并)和M(修改),因此您可以仅过滤未合并的文件。

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

不需要管道到uniq

你可以考虑的另一件事是简单地将你的编辑器设置为difftool,即对于VSCode文档指定如何通过将其添加到你的.gitconfig

来做到这一点
[diff]
    tool = default-difftool
[difftool "default-difftool"]
    cmd = code --wait --diff $LOCAL $REMOTE

最新更新