Not sure whether your case is the same as mine, but I had a similar issue, but it was caused by the merge settings which were also in the .gitconfig
My settings contained lines like
[merge]
tool = BeyondCompare3
[diff]
guitool = BeyondCompare3
[difftool "BeyondCompare3"]
path = C:/Program Files (x86)/Beyond Compare 3/BComp.exe
cmd = \"C:/Program Files (x86)/Beyond Compare 3/BComp.exe\" \"$LOCAL\" \"$REMOTE\"
[mergetool "BeyondCompare3"]
path = C:/Program Files (x86)/Beyond Compare 3/bcomp.exe
cmd = \"C:/Program Files (x86)/Beyond Compare 3/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\"
What appears to happen is that git uses the latter option (with four parameters) rather than the former.
The workaround was to rename the mergetool from
[mergetool "BeyondCompare3"]
to
[mergetool "MergeBeyondCompare3"]
which means that it uses the difftool version with two parameters.
You would expect that you should also be able to change the first section to
[merge]
tool = MergeBeyondCompare3
but if you do that then the command git difftool file1.txt file2.txt
uses Merge rather than diff which takes use back to where we were.
Downside is if you actually want to use merge, you will need to use the -t MergeBeyondCompare3
command line option.