我正在使用git 1.9.4 for(http://git-scm.com/download/win)。
$ git difftool branchA branchB
为diff中的所有文件一次打开vsdiffmerge
个文件。
$ git difftool --no-prompt branchA branchB
尝试一次性打开所有文件(我想要发生的事情),但vsdiffmerge无法正常处理此任何文件。
如何配置我的difftool所以行为是vsdiffmerge的一个实例,所有差异都有多个标签?
gitconfig:
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[diff]
tool = vsdiffmerge
[difftool]
prompt = true
[difftool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$LOCAL\" \"$REMOTE\" //t
keepbackup = false
trustexistcode = true
[merge]
tool = vsdiffmerge
[mergetool]
prompt = true
[mergetool "vsdiffmerge"]
cmd = \"C:\\Program Files (x86)\\Microsoft Visual Studio 11.0\\Common7\\IDE\\vsdiffmerge.exe\" \"$REMOTE\" \"$LOCAL\" \"$BASE\" \"$MERGED\" //m
keepbackup = false
trustexistcode = true
答案 0 :(得分:0)
答案是,最后删除/t
(或//t
,因为是转义)。
参数/t
打开一个临时选项卡。这是选项卡,已被替换。如果没有此参数,Visual Studio将打开一个永久选项卡,并将其添加到已经打开的其他选项卡中。
另请参见此处:
https://roadtoalm.com/2013/10/22/use-visual-studio-as-your-diff-and-merging-tool-for-local-files/
PS:即使我最后删除了/t
,对我来说,差异仍然在一个临时选项卡中打开。这样做的原因(至少就我而言)是Visual Studio或Git忽略了工具vsdiffmerge
中的所有设置。重命名该工具后,一切正常。
因此,我建议将该工具重命名为vsdiff
之类,删除/t
,然后重试。
别忘了像git difftool -t vsdiff --no-prompt branchA branchB
这样称呼它,以明确使用名为vsdiff
的工具或将vsdiff
设置为默认工具。