如何分离“git gui”在Windows上的“Git bash”中开始?

时间:2013-04-02 12:02:37

标签: windows git git-bash msys git-gui

例如,

  1. 我开始“git bash”;
  2. 我navitage到certian目录;
  3. 我开始git gui&;
  4. 我关闭控制台窗口或按Ctrl + C.
  5. Git-gui的窗户消失了。即使我使用git gui&disown。当我按下Ctrl + C时,即使它不在前景中。

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

5 个答案:

答案 0 :(得分:4)

为了其他人的利益,我将提供与git bashmsys bash相关的更一般的答案。

解决方案1:没有标准输出分离

假设你要分离应用程序:

"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替换为cmdowNirCmd或类似内容。

解决方案2:使用stdout

分离

如果要将日志读取到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"

答案 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,完全分离。 (注意连字符)。