例如,
git gui&
; Git-gui的窗户消失了。即使我使用git gui&disown
。当我按下Ctrl + C时,即使它不在前景中。
如何从Windows控制台正确分离git gui
?
答案 0 :(得分:4)
为了其他人的利益,我将提供与git bash和msys bash相关的更一般的答案。
假设你要分离应用程序:
"C:\Program Files\MyApp\MyApp.exe"
,它不会输出您想要检索到stdout(或stderr)的任何信息 在Windows bash shell中使用:
cmd //c start //D "C:\\Program Files\\MyApp" MyApp.exe arg1 arg2
MyApp将在一个单独的窗口中运行,关闭调用bash shell不会影响它(基本上像Linux守护进程一样)。
如上所述,除非是对话框消息,否则无法读取应用程序消息,因此此解决方案适用于GUI应用程序。无论如何,如果MyApp.exe
是一个Windows批处理文件,如MyApp.cmd
,它将调用其cmd.exe主机并在那里登录:简而言之,您将读取.cmd / .bat案例的输出。
类似Mac的用户
cmd.exe
窗口会瞬间闪烁。如果这对您(r用户)来说不是那么酷,请在上面一行中将cmd
替换为cmdow,NirCmd或类似内容。
如果要将日志读取到stdout和stderr,请使用:
cmd //c start cmd //k "C:\\Program Files\\MyApp\\MyApp" arg1 arg2
如果MyApp是控制台应用程序,则建议使用此备选方案。现在你得到一个带有“家”的守护进程。 MyApp将由第二个cmd.exe
托管,您将在此处看到其输出
对于GUI应用程序,您最终会看到两个窗口:MyApp窗口和调用cmd窗口。
在这两种情况下,退出MyApp并不意味着关闭cmd窗口;关闭cmd窗口只会关闭MyApp控制台。
如果闪烁的冲击击中你,在这里你只需要替换第一个cmd
,第二个是你的守护进程的visbile home。
某些文档与某些处理应用程序密切相关,通过类似Linux shebang语法的机制,但基于Windows的注册表;所以你打开文档而不调用相关的应用程序。
此行为可以在bash中进行模拟,甚至可以在分离的样式中进行模拟。
对于不需要输出到stdout和stderr的应用程序,打开MyApp.doc:
cmd //c start //D "C:\\Program Files\\MyApp" MyApp.exe "Path\\to\\MyApp.doc"
可以简化为:
cmd //c start //D "Path\\to" MyApp.doc
对于需要stdout和stderr输出的应用程序,
cmd //c start cmd //k "C:\\Program Files\\MyApp\\MyApp" "Path\\to\\MyApp.doc"
可以简化为:
cmd //c start cmd //k "Path\\to\\MyApp.doc"
答案 1 :(得分:3)
以下命令适用于" git bash":
git gui </dev/null >/dev/null 2>&1 &
我尝试 Ctrl + C , Ctrl + D 并简单地关闭控制台窗口。 git gui
在所有情况下都保持开放。
答案 2 :(得分:2)
如果gitgui已经启动,您可以disown
该作业,以便它不会以控制台结束:
disown -h <jobid>
如果您想在启动Git GUI时执行此操作(因此您只是启动并忘记),则nohup
但是由于未知原因,它不在MsysGit分发的二进制文件中
答案 3 :(得分:2)
根据安东尼奥的回答,我找到了以下方法:
cmd //c start //D "C:\Program Files\Git\bin" "wish.exe" "C:\Program Files\Git\libexec\git-core\git-gui"
可以通过在shell中按Ctrl-D进行测试。外壳正常关闭,git gui继续工作。
缺点:此解决方案忽略当前目录并在C:\Program Files\Git\bin
目录中打开git gui,而不是在当前目录中。
有人可能会说,Windows上的git gui会记住最近的存储库,所以只需点击一下即可。没错,但问题是:如何在当前目录中获取分离的git gui
...
我尝试了一些变种来修复这个缺点,但没有什么能真正令人满意的。
下面的内容总是会询问打开git gui
的内容。在文件选择器中选择“C:\ Program Files \ Git \ bin \ wish.exe”可以正常工作,但必须每次都这样做。
cmd //c start //D "E:\\escapedwindowsstyle\\path\\to\\my\\git\\repo\\" "C:\\Program Files\\Git\\bin\\wish.exe" "C:\\Program Files\\Git\\libexec\\git-core\\git-gui"
cmd //c start "C:\\Program Files\\Git\\bin\\wish.exe" "C:\\Program Files\\Git\\libexec\\git-core\\git-gui"
任何人都能理解会发生什么和/或改进吗?
答案 4 :(得分:1)
在Windows 2.25的Git中,只需键入
git-gui
打开当前工作目录的GUI,完全分离。 (注意连字符)。