git difftool卡在shell上

6
我正在使用Windows的git bash,使用Beyond & Compare作为我的difftool(但任何外部difftool都会出现同样的问题)。
我希望我的终端不必等待difftool退出才能将终端控制权归还。当我在命令行中执行其他git任务时,保持difftool会话打开对我很有用。
这是否可能?
我不知道这是否与trustexistcode有关,但此设置不会改变我正在寻找的终端行为。

2
这是终端的一般特性,不是git或difftool特有的。您可以尝试在命令后面加上&,即git difftool & - 1615903
此外,在启动差异工具后,终端上的ctrl + z可能会起作用 - 不确定在Windows上的行为如何。 - 1615903
2个回答

3

当我提出问题时,我不知道我可以简单地退出句柄(它只等待外部工具发出其退出代码),使用Ctrl + C

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

编辑 - 更好的解决方案:如@1615903的评论所建议,在difftool命令后面加上&似乎可以启动difftool而没有任何句柄。


按Ctrl+C可以解除控制台锁定并保持Beyond Compare打开吗?对我来说,在控制台中按下Ctrl+C会关闭Beyond Compare,这不是我想要的结果。(其他评论中提到的建议,以及&和Ctrl+Z,也对我无效。) - pettys
@pettys 我同意,BC似乎将Ctrl+C视为退出命令(或其他什么)。我刚刚更新了解决方案:使用&可以很好地使终端返回,即使BC正在运行。 - Sbu
真的吗?你怎么输入呢?我尝试了“git difftool --dir-diff &”,但好像没有任何效果。 - pettys
我按照你说的方式编写,它返回如下内容: [1] 560 然后返回句柄。看起来数字560是当前bash进程的PID。括号中的数字就像是我输入该命令的次数计数。 - Sbu

0
我找到的解决方案是使用别名函数。 引用的$@非常重要,因为在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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接