设置Beyond Compare 作为git diff 工具

本文详细介绍如何在Git中配置BeyondCompare作为版本比较和合并工具,包括在不同操作系统下的具体步骤,解决常见问题,实现更高效地代码版本管理和冲突解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Before

使用git作为版本控制很方便,但是,在开发嵌入式应用的时候 一般的IDE是不集成git工具的,导致我们执行diff命令只能在终端下,多文件(大项目)去比较是很累的,而集成git的IDE 比如VS,可以直观的进行对比(左右文件),有类似Beyond Compare的效果,那么,我们能不能使用Beyond Compare进行版本比较呢?

惊喜

在网上查了查 找到了方法

method one

直接使用命令

# 执行下面命令,参看支持对比合并工具名称,比如bc就是指beyond compare(收费软件,推荐使用开源的kompare)
$ git difftool --tool-help

# 执行下面命令设置git的对比工具
$ git config --global diff.tool 对比合并工具名称                           #例如: 设置使用开源的kompare来作为diff工具, 则执行$ git config --global diff.tool kompare
$ git config --global difftool.对比合并工具名称.path  对比合并工具名称的路径  #指定对比可执行文件的路径

#执行下面命令设置git的合并工具
$ git config --global merge.tool 对比合并工具名称                          #设置合并工具
$ git config --global mergetool.对比合并工具名称.path 对比合并工具名称的路径  #指定合并工具可执行文件的路径

method two

修改根目录下的.gitconfig文件,以bc为例:

# cat /home/zh/.gitconfig 
[core]
    editor = vim
[diff]
    tool = bc
[difftool "bc"]
    path = /usr/bin/bcompare
[merge]
    tool = bc
[mergetool "bc"]
    path = /usr/bin/bcompare

附加

另外,git difftool 比较时,老提示Launch ‘bc’ [Y/n]?
临时解决办法:使用git difftool -y
永久解决办法:git config --global --add difftool.prompt false

windows 下的解决方案

介绍 其实各种git的GUI客户端都有自带比对工具,但是一开始学Git的时候,用的是Windows下的Git Bash,后来也渐渐熟悉各种命令,用图形客户端反而不习惯了。 这里介绍如何将Beyond Compare配置为git的difftool和mergetool。当需要比对或者合并冲突时,就可以通过difftool和mergetool调用Beyond Compare进行比对和合并冲突了。

操作 目前我电脑里安装的是Beyond Compare 4,就介绍一下4的设置,Beyond Compare 3也是类似的。
其实Beyond Compare官网就有介绍 如何配置git的difftool和mergetool,其实就几行git命令。

#difftool 配置
git config --global diff.tool bc4
git config --global difftool.bc4.cmd "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""

#mergeftool 配置
git config --global merge.tool bc4
git config --global mergetool.bc4.cmd ““c:/program files (x86)/beyond compare 4/bcomp.exe” “KaTeX parse error: Can't use function '\"' in math mode at position 6: LOCAL\̲"̲ \"REMOTE” “KaTeX parse error: Can't use function '\"' in math mode at position 5: BASE\̲"̲ \"MERGED””
git config --global mergetool.bc4.trustExitCode true

但是我照着上面的步骤配置,使用difftool命令后,发现左右两边都为空白文件。研究了半天没研究出个所以然。 后来突然想起来用户目录下的.gitconfig看看配置情况,才发现原因。 打开配置文件看到的信息差不多是这样:

[diff]
tool = bc4
[difftool]
prompt = false
[difftool "bc4"]
cmd = \"c:/program files (x86)/beyond compare 4/bcomp.exe\" 

使用git bash是执行上述几个命令后,.gitconfig文件中并没有 \"$LOCAL\" \"$REMOTE\""的影子,所以使用difftool比对文件时,两边都是空白,因为根本就没有传参数进去。 所以换一个思路,不用命令设置,而是直接编辑.gitconfig文件设置,就没问题了。

.gitconfig文件新增如下配置并保存

[diff]
tool = bc4
[difftool]
prompt = false
[difftool "bc4"]
cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\""
[merge]
tool = bc
[mergetool]
prompt = false
[mergetool "bc4"]
cmd = "\"c:/program files (x86)/beyond compare 4/bcomp.exe\" \"$LOCAL\" \"$REMOTE\" \"$BASE\" \"$MERGED\""

然后在git命令行中执行相关命令就ok啦:)

#比对当前文件相对于Head版本的改动
git difftool <file_name>

#当merge <branch_name>提示冲突时,执行下面命令便可以调出bc合并冲突
git mergetool

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值