我已经在我的 Mac 上安装了 DiffMerge 并配置了 git 以按照他们的说明使用它,它运行良好。
http://twobitlabs.com/2011/08/install-diffmerge-git-mac-os-x/#comment-140648
Hit return to start merge resolution tool (diffmerge):
/usr/lib/git-core/git-mergetool: 1: eval: diffmerge: not found
merge of app/Http/Controllers/WizardController.php failed
有任何想法吗?是否需要其他配置或其他东西......?
我运行的配置是:
git config --global diff.tool diffmerge
git config --global difftool.diffmerge.cmd 'diffmerge "$LOCAL" "$REMOTE"'
git config --global merge.tool diffmerge
git config --global mergetool.diffmerge.cmd 'diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"'
git config --global mergetool.diffmerge.trustExitCode true
我运行的命令(当需要解决 git 冲突时)是:
git mergetool
谢谢
添加评论:
当我将 SSH 终端连接到远程服务器(例如 CodeAnywhere 服务器)并运行“git mergetool”时,它显然会运行 /usr/lib/git-core/git-mergetool,但在远程系统上找不到 diffmerge . 我根本看不到 diffmerge 在哪里实际安装了遥控器上的任何东西。
这是与 diffmerge 相关的 git config 部分:
diff.tool=diffmerge
difftool.diffmerge.cmd=diffmerge "$LOCAL" "$REMOTE"
merge.tool=diffmerge
mergetool.diffmerge.cmd=diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
mergetool.diffmerge.trustexitcode=true
看来这是 git 用来运行 diffmerge 的实际命令:
mergetool.diffmerge.cmd=diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
引发错误的文件是 /usr/lib/git-core/git-mergetool ,我在该文件中跟踪到这一行,该文件显然是从命令行运行上述命令并且在远程机器上找不到 diffmerge 因为它没有安装在远程机器上因为它安装在我的本地机器上:
if ! run_merge_tool "$merge_tool" "$present"
then
echo "merge of $MERGED failed" 1>&2
mv -- "$BACKUP" "$MERGED"
if test "$merge_keep_temporaries" = "false"
then
cleanup_temp_files
fi
return 1
fi
似乎我错过了在远程上安装的东西,或者我错过了一个配置,告诉它将文件“临时复制”到我的本地,然后在我的本地运行 diffmerge,然后将远程文件返回到远程。我只是看不出在这种情况下遗漏了哪个。
谢谢
感谢@nwinkler 的快速回复。如果我理解您的建议,它是在本地 Mac 上运行术语 win,而不是在远程上运行术语 win(在 Mac 上运行意味着 diffmerge.sh 等默认情况下可用于 Mac 的术语通过驱动器赢取它作为术语赢运行),而远程术语赢将无法直接访问我的本地驱动器。如果我错了,请纠正我。
我确实按照您的建议运行了“which diffmerge”,但根本找不到它(未安装在遥控器上)。
我会更深入地研究您的建议,看看是否要在遥控器上安装一些东西,并尝试您建议的“安装程序”。
如果我从本地 Mac 上运行的术语 win 运行它,它确实可以正常工作。
我同意它没有在遥控器上找到 diffmerge。我只是看不到那里要安装什么....
谢谢,继续研究并进一步尝试您的建议。