阅读完使用 .gitconfig 配置 diff 工具后,我将我的
~/.gitconfig
设置为包含以下内容:
[diff]
tool = bbdiff
[difftool "bbdiff"]
cmd = /usr/local/bin/bbdiff --wait --resume "$LOCAL" "$REMOTE"
但是当我运行
git difftool
或 git difftool somefile.ext
时,我只是将差异转储到标准输出(彩色)。我如何找出 bbdiff 没有被调用的原因?
注意,我使用的是 macOS 10.15.6 及其默认 zsh 和 git 版本 2.28.0。
更新:(评论中问题的答案)
回复zrzka的第二条评论:
✗ git config -l | fgrep diff
diff.tool=bbdiff
difftool.bbdiff.cmd=/usr/local/bin/bbdiff --wait --resume $LOCAL $REMOTE
回应zrzka的第三条评论:
✗ git difftool --tool-help
'git difftool --tool=<tool>' may be set to one of the following:
opendiff
vimdiff
vimdiff2
vimdiff3
user-defined:
bbdiff.cmd /usr/local/bin/bbdiff --wait --resume $LOCAL $REMOTE
The following tools are valid, but not currently available:
araxis
...
更新#2:
以防万一它是相关的,我不知道为什么我在 iTerm (或终端)中运行的所有 git 命令都通过管道传输
less
。 git branch
和 git diff
都会在一页后停止,并且 h
会显示“较少命令摘要”。但 git difftool
并未通过 less
进行管道传输。
更新#3:
根据zrzka评论的建议,我创建了
/usr/local/bin/foo
:
✗ cat /usr/local/bin/foo
#!/usr/bin/env bash
echo "Foo $@"
✗ ll /usr/local/bin/foo
-rwxr-xr-x 1 dspitzer admin 34B Aug 13 13:09 /usr/local/bin/foo
我在我的
.gitconfig
中配置了它:
✗ cat ~/.gitconfig
[user]
name = Daryl Spitzer
email = [email protected]
[pager]
diff = false
[diff]
tool = foo
[difftool]
prompt = false
[difftool "foo"]
cmd = /usr/local/bin/foo "$LOCAL" "$REMOTE"
但是
git difftool
只是输出到标准输出。
问: git 在某处有日志吗?
我发现这篇文章似乎大部分都有效。 https://twitter.com/markjgardner/status/1544706759859879936
所以现在我有:
[diff]
tool = bbdiff
guitool = bbdiff
[difftool "bbdiff"]
path=/usr/local/bin
cmd=bbdiff --wait --resume $LOCAL $REMOTE
请注意,我以前有过这个:
[difftool]
prompt = false
trustExitCode = true
除了
[difftool "Kaleidoscope"]
部分,所以我必须移动prompt
和trustExist[difftool "Kaleidoscope"]
部分。
整个部分现在看起来像这样:
[diff]
tool = bbdiff
guitool = bbdiff
[difftool "bbdiff"]
path=/usr/local/bin
cmd=bbdiff --wait --resume $LOCAL $REMOTE
[difftool "Kaleidoscope"]
cmd = ksdiff --partial-changeset --relative-path \"$MERGED\" -- \"$LOCAL\" \"$REMOTE\"
prompt = false
trustExitCode = true
有趣的是,尽管 X 帖子说“在一个 Mac 窗口中而不是一次在一个文件中”,我仍然看到 BBEdit 一次打开一个窗口。可能这只是我错误的 BBEdit 设置。