我在 macOS 上使用 Git 的 difftool 命令和 Beyond Compare 时遇到问题。当我运行以下命令时:
git difftool --dir-diff HEAD^ HEAD
Beyond Compare 已成功打开,但未按预期显示提交之间的差异。相反,它会比较这些文件,就好像它们是不同的文件一样,即使它们应该显示两次提交之间的实际差异。
git difftool -d
基本上创建了两个 tmp 目录,其中包含需要比较的文件的副本。
但是,当它检测到第二个目录中的文件与工作树文件具有完全相同的内容时,
git
会创建指向实际文件的符号链接,而不是该文件的副本。
我的理解是:在这种情况下,当您通过 diff 查看器编辑文件时,您编辑的是磁盘上的实际文件,而不是命令退出时将被删除的 tmp 副本。
显然这不适合Beyond Compare,它说“这两件事是不同的”而不是让你比较两个内容。
看看 Beyond Compare 是否有处理符号链接的选项——如果没有,我会感到惊讶。
或者使用另一个 diff 查看器:我知道
meld
可以很好地处理符号链接,例如:
git difftool --tool=meld HEAD~ HEAD