windows - 如何在 Windows 上从 "git gui"开始分离 "Git bash"?

标签 windows git git-bash msys git-gui

例如,

  1. 我开始“git bash”;
  2. 我导航到 certian 目录;
  3. 我开始git gui&;
  4. 我关闭控制台窗口或按 Ctrl+C。

Git-gui 的窗口消失了。即使我使用了 git gui&disown。即使当我按下 Ctrl+C 时它不在前台。

如何从 Windows 控制台正确分离 git gui

最佳答案

为了其他人的利益,我将给出与 git bash 相关的更一般的答案和 msys bash .

解决方案 1:不使用 stdout 分离

假设您要分离应用:

"C:\Program Files\MyApp\MyApp.exe"

它不会将您要检索的任何信息输出到标准输出(或标准错误)。
在 Windows bash shell 中使用:

cmd //c start //D "C:\\Program Files\\MyApp"  MyApp.exe arg1 arg2 

MyApp 将在单独的窗口中运行,关闭调用的 bash shell 不会影响它(大体上就像一个 Linux 守护进程)。

如前所述,除非是对话框消息,否则您无法读取应用程序消息,因此此解决方案适合 GUI 应用程序。无论如何,如果 MyApp.exe 是一个类似 MyApp.cmd 的 Windows 批处理文件,它将调用其 cmd.exe 主机并在那里登录:简而言之,您将读取输出.cmd/.bat 案例。

类似 Mac 的用户

cmd.exe 窗口将瞬间闪出。如果这对您(用户)来说不是很酷,请在上面的行中将 cmd 替换为 cmdow , NirCmd或类似的东西。

解决方案 2:使用标准输出分离

如果您想将日志读取到 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。

解决方案 3:分离以文档为中心的应用程序

一些文档与一些处理应用程序密切相关,通过类似于 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"

关于windows - 如何在 Windows 上从 "git gui"开始分离 "Git bash"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763615/

相关文章:

git - 在哪里放置我的 Git 源?

android - Git Bash (Windows 7) : sh. exe 上出现错误:android:找不到命令

git - 摆脱旧 git 分支的 '... does not point to a valid object'

git - 本地分支的文件 stash 在哪里

git - 无法在 macOS High Sierra 10.13.3 上将文件提交到 Git Bash

c++ - 选择子进程继承哪些句柄

windows - ShellExecute 何时引入 Windows API

windows - 为什么此 CreateFile() 调用会导致 Windows 8 出现蓝屏?

windows - 在 Windows 上使用引号名称的 Git 标签

linux - 如何将linux内核迁移到更高的内核版本