我从这里的问题中重现了我的答案,该问题更具体地涉及将Beyond Compare设置为Git的比较工具。 我分享的所有细节对于任何一般的diff工具同样有用,因此在这里分享。
我们运行的第一个命令如下所示:
git config --global diff.tool bc3
以上命令会在%userprofile%目录下的.gitconfig文件中创建以下条目:
[diff]
tool = bc3
%userprofile% 是一个环境变量,你可以在运行提示符中输入并按下Enter,以打开包含.gitconfig文件的目录位置。
就这样。 这就是在设置已发布版本的任何已知比较工具(如此例中Git已知其第三版Beyond Compare)时所需的全部内容。
现在让我们深入了解一下!
此外,你可能需要运行以下命令:
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"
运行该命令是可选的。它仅在某些特殊情况下才需要。我们很快就会知道它的原因。
这里最重要的事情是了解关键字bc3。这是Git中一个众所周知的关键字,它映射到市场上特定版本的特定比较工具,比如在这种情况下,bc3对应于Beyond Compare工具的第三个版本。如果您想查看Git维护的关键字完整列表,则在Git Bash命令行上运行下面的命令:
git difftool --tool-help
当我们运行上述命令时,它会返回以下列表:
vimdiff
vimdiff2
vimdiff3
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
examdiff
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
kompare
meld
opendiff
p4merge
tkdiff
winmerge
xxdiff
在为Git设置比较工具时,可以根据使用的工具及其版本使用上述任何预定义键之一,例如,对于Beyond Compare v1,我们将使用键
bc,对于Beyond Compare v3,我们将使用键
bc3。但在某些情况下,我们可能需要定义自己的全新键,例如,假设我们正在设置一个刚刚推出市场的全新比较工具。由于明显的原因,您计算机上安装的Git当前版本不会显示任何与此新工具相对应的键。最终Git将在未来发布中展示它,但不是立即。同样,这个问题也可能发生在现有工具的新版本发布上,例如,上述列表中没有Beyond Compare v4的键。因此,您始终可以将任何工具映射到任何预定义键或自定义键中。如果您将任何工具映射到Git已知的键,则无需运行第二个命令。但请记住,这仅在工具的EXE位置在各个版本之间不变时才有效。如果Beyond Compare v3和v4在%programfiles%目录中具有不同的安装位置,则必须运行第二个命令。
[diff]
tool = bc3
但是,如果我们想要关联非默认的工具,则需要单独提及路径属性,以便Git知道从哪里启动EXE的路径。下面的条目告诉Git启动Beyond Compare v4。请注意EXE的路径:
[difftool "bc3"]
path = c:/program files/Beyond Compare 4/bcomp.exe
此外,如果我们愿意,我们可以将Beyond Compare v4映射到其他工具预定义的任何键上,例如examdiff。Git不会阻止您这样做的坏事情。虽然我们不应该这样做以避免维护上的噩梦。
最干净的方法是定义一个自定义键。我们可以为任何新的比较工具或旧工具的新版本定义全新的键。就像在我的例子中,我定义了一个相当直观的新键bc4。我也可以把它命名为foobaar。
现在,当键值是全新的时候,设置过程略有不同。在这种情况下,您需要运行两个命令。但是我们的第二个命令将不会设置新工具的EXE路径。相反,我们必须像下面显示的那样为我们的新工具设置cmd属性:
git config --global diff.tool bc4
git config --global difftool.bc4.cmd "\"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"\$LOCAL\" -d \"\$REMOTE\""
运行上述命令将在您的.gitconfig文件中创建以下条目:
[diff]
tool = bc4
[difftool "bc4"]
cmd = \"C:\\Program Files\\Beyond Compare 4\\bcomp.exe\" -s \"$LOCAL\" -d \"$REMOTE\"
我强烈建议你遵循方法2,以避免将来出现任何维护问题。