git difftool 持有 shell

git difftool holding the shell

我正在使用 git bash for Windows 和 Beyond & Compare 作为我的 difftool(但同样的事情发生在任何外部 difftool 上)。

我希望我的终端不要等待 difftool 退出以交还终端控制权。在命令行中执行其他 git 任务时保持 difftool 会话打开对我来说很有用。

可能吗?

我不知道这是否与 trustexistcode 有关,但此设置不会改变我正在寻找的终端行为。

当时我问的问题我不知道我可以使用 Ctrl + C[= 简单地退出句柄(它只是在等待外部工具发出其退出代码) 18=]。

这不是自动的,但足以开始。

编辑 - 更好的解决方案:如@1615903 的评论中所建议,在 difftool 命令之后放置一个 & 似乎是在没有任何句柄的情况下启动 difftool。

我找到的解决方案是使用别名函数。 引号 $@ 很重要,因为 windows 带空格的文件夹名称很常见。

start_git_difftool() {
    if [ "$#" -eq  "0" ]
    then
        git difftool --dir-diff &
    else
        git difftool "$@" &
    fi
}

start_bcomp() {
    BCompare.exe "$@" &
}

alias bcomp=start_bcomp
alias gdiff=start_git_difftool