使用BeyondCompare查看GIT中文件之间的差异

kqqjbcuj  于 2022-12-21  发布在  Git
关注(0)|答案(5)|浏览(253)

在我提交我的修改之前,我想使用GIT中的BeyondCompare查看差异。我如何配置BeyondCompare来查看我的文件中的差异?
我看了这个链接,但它没有帮助。
BeyondCompare安装在系统中的以下位置:第一个月
我运行以下两个命令:

git config --global merge.tool bc

git config --global mergetool.bc.path "C:\program files\Beyond Compare\BCompare.exe"

我在Windows 7上使用GIT。
谢谢!

ca1c2owp

ca1c2owp1#

Beyond compare是一个mergetool和一个diff工具,我已经为这两个操作准备好了,当我想查看当前状态和上次提交状态之间的差异时,我会写

git diff

用于快速文本输出和小的更改,以及

git difftool

查看多个文件中的更改。另外请记住,您可以创建git日志,复制提交的哈希值的第一部分,然后执行

git difftool (commit1) (commit2)

并逐一比较所有文件(非常有效率和有用)

tkclm6bt

tkclm6bt2#

问题中提到的指令在我上次尝试时有效,但我认为您应该在git bash中运行这些命令,并将路径中的反斜杠替换为正斜杠。

git config --global merge.tool bc
git config --global mergetool.bc.path "C:/program files/Beyond Compare/BCompare.exe"
p1iqtdky

p1iqtdky3#

如果你使用的是WindowswithWSL,你可以配置git在两种环境下(Linux和Windows)都使用你的windows diff和merge工具。
在Windows上设置.gitconfig很简单,但在Linux上就不一样了,我使用的是Beyond Compare 3(安装在Windows上),我在Windows和Linux上都配置了git,把它用作合并和比较工具。
我将描述如何在Linux中配置我的.gitconfig文件。我使用的是Ubuntu 20.04,但我想在其他发行版中应该是类似的。幸运的是,合并工具不需要额外的设置。

配置合并工具

这一部分非常简单,您只需要在.gitconfig文件中添加以下配置:

[merge]
    tool = bc
[mergetool]
    keepBackup = false
    trustExitCode = true
    prompt = false
[mergetool "bc"]
    path = /mnt/c/Program Files/Beyond Compare 4/bcomp.exe

有一些额外的可选设置,但你可以简单地使用它,因为我做的一件重要的事情是,mergetool路径注意。在我的情况下,我有超越比较安装在我的c windows驱动器

配置比较工具

对于diff工具来说,事情有点复杂,需要更多的努力。你需要做的第一件事是创建一个单独的可执行文件。我不知道为什么需要这样做,但git docs这么说。
在我的示例中,我在\\wsl.localhost\Ubuntu\home\{your-user}\.local\bin\extDiff上创建了自己的可执行文件,并授予它执行权限chmod +x extDiff
这是它的内容

#bin/bash
"/mnt/c/Program Files/Beyond Compare 4/bcomp.exe" "$1" "$2"

唯一缺少的是更新.gitconfig文件

[diff]
    tool = bc
[difftool]
    prompt = false
[difftool "bc"]
    cmd = /home/{your-user}/.local/bin/extDiff `wslpath -m "$REMOTE"`  `wslpath -m "$LOCAL"`

wslpath是一个将linux路径转换为windows路径的程序,反之亦然。在本例中,我调用之前定义的可执行文件,在执行过程中传递git提供的$REMOTE$LOCAL变量。注意,我必须将当前的Linux路径转换为Windows路径。
现在一切都设置好了。下次运行git difftoolgit mergetool时,Windows“Beyond Compare”将启动。

eufgjt7s

eufgjt7s4#

这个链接告诉我们如何在git中设置BeyondComapre作为diff工具

git config --global diff.tool bc3
git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"

要使用Beyond Compare启动比较,请使用命令“git difftool foofile.txt“。

twh00eeo

twh00eeo5#

我将详细阐述更多内容,以补充SharpCoder的公认答案。
我们运行的第一个命令如下所示:

git config --global diff.tool bc3

上述命令在**%userprofile%目录中的.gitconfig**文件中创建以下条目:

[diff]
    tool = bc3

%userprofile%是一个环境变量,您可以在Run提示符下键入该变量,然后按Enter键打开**.gitconfig**文件所在的目录位置。

就是这样,这就是你在设置一个Git已知的比较工具的已发布版本时所需要的,就像在这个例子中,Beyond Compare的第三个版本是Git已知的。
“* 让我们来一次深潜吧**
此外,您 * 可能 * 还需要运行以下命令:

git config --global difftool.bc3.path "c:/program files/beyond compare 3/bcomp.exe"

运行此命令是 * 可选 * 的。只有在某些特殊情况下才需要。我们将在稍后了解其原因。
上述命令在**.gitconfig**文件中创建以下条目:

[difftool "bc3"]
    path = c:/program files/Beyond Compare 3/bcomp.exe

这里最重要的是密钥bc 3。这是Git的一个众所周知的密钥,它Map到市场上可用的特定比较工具的特定版本。例如,在本例中,bc 3对应于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,我们将使用密钥bc 3
但在某些情况下,我们可能需要定义一个全新的密钥,例如,假设我们正在设置一个全新的比较工具,该工具刚刚发布到市场上。由于显而易见的原因,您的机器上安装的当前版本的Git不会显示任何与此新工具对应的密钥。最终,Git会在未来的版本中显示它,但不会立即显示。类似地,这个问题可能会发生在一个新发布的版本的一个现有的工具也例如有没有键超越比较v4在上面的列表中.所以你总是可以自由地Map任何工具到任何一个预先存在的键或到一个 * 新 * 自定义键你自己.
现在,让我们了解以下场景,同时设置比较工具:

*旧工具的新版本已发布,但未Map到Git中的任何预定义键

*绝对是市场上的新产品

就像我的例子一样,我安装了Beyond Compare v4。Beyond Compare工具对Git来说是已知的,但它的版本4没有Map到任何现有的键,所以我们可以遵循以下方法:
1.由于Git中没有Beyond Compare v4的键,所以我们可以将其Map到已经存在的键bc 3,即使它应该Map到Beyond Compare v3。我们可以智胜Git以保存一些工作。

现在,这是我们在第一段中没有回答的问题的答案-如果你将任何工具Map到Git已知的键,那么你就 * 不 * 需要运行第二个命令。这是因为工具的EXE位置Git已经知道了。

  • 但请记住 *,只有当工具的EXE位置不随版本而变化时,此命令才有效。如果Beyond Compare v3和v4在%programfiles%目录中的安装位置不同,则必须运行第二个命令。

例如,如果我已经在我的机器上安装了Beyond Compare v3,那么在我的**.gitconfig**文件中有以下配置就足以完成安装过程。这是基于v3和v4将具有相同安装路径的假设。

[diff]
tool = bc3

但是如果我们想关联非默认工具,那么我们需要单独提及path属性,这样Git才能知道EXE的路径,下面的条目告诉Git启动Beyond Compare v4,注意EXE的路径:

[difftool "bc3"]
path = c:/program files/Beyond Compare 4/bcomp.exe

此外,如果我们愿意,我们可以将Beyond Compare v4Map到其他工具的 * 任意 * 预定义键,例如examdiff。Git不会阻止你做这件坏事,尽管我们不应该 * 这样做,以避免维护噩梦。
1.最干净的方法是定义一个自定义键。我们可以为任何新的比较工具或旧工具的新版本定义一个全新的键。就像我的例子一样,我定义了一个新键bc 4,因为它非常直观。我可以将其命名为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,以避免将来出现任何维护问题。

相关问题