How to detach "git gui" started in "Git bash" on Windows?

git, git-bash, git-gui, msys, windows

Solution

To the benefit of the others I will give a more general answer related to both git bash and msys bash.

Solution 1: Detach without stdout

Assume you want to detach the app:

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

which does not output any info you want to retrieve to stdout (or stderr). use in your Windows bash shell:

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

MyApp will run in a separate window and closing the calling bash shell will not affect it (by and large like a Linux daemon).

As noted, you can't read app messages unless they are dialog messages, therefore this solution fits to GUI applications. Anyway, if `MyApp.exe` is instead a Windows batch file like `MyApp.cmd`, it will call its cmd.exe host and log there: in short you will read outputs for the .cmd/.bat case.

Mac-like users

The `cmd.exe` window will flash-out for an instant. If this is not such cool for you(r users), in the above line replace `cmd` with cmdow, NirCmd or the likes.

Solution 2: Detach with stdout

If you want to read logs to stdout and stderr, use:

cmd //c start cmd //k  "C:\\Program Files\\MyApp\\MyApp" arg1 arg2 

This alternative is mostly advised if MyApp is a console application. Now you get a daemon with a "home". MyApp will run hosted by the second `cmd.exe` and you will see here its output. For a GUI app you end out with two windows: MyApp window and the calling cmd window.

In both cases, exiting MyApp doesn't mean closing the cmd window; while closing the cmd window will only close MyApp console.

If the flashing punch strikes you, here you only need to replace the first `cmd`, the second is your daemon's visbile home.

Solution 3: Detach document centric applications

Some documents are closely related to some processing applications, via a mechanism resembling the Linux shebang syntax, but based on Windows' registry; so you open the document without calling the related application.

This behaviour can be emulated in bash and even in a detached style.

As for apps not needing to output to stdout and stderr, opening MyApp.doc with:

cmd //c start //D "C:\\Program Files\\MyApp"  MyApp.exe  "Path\\to\\MyApp.doc"

can be simplified to:

cmd //c start //D "Path\\to" MyApp.doc

As for apps needing stdout and stderr output,

cmd //c start cmd //k  "C:\\Program Files\\MyApp\\MyApp" "Path\\to\\MyApp.doc"

can be reduced to:

cmd //c start cmd //k  "Path\\to\\MyApp.doc"

Problem

For example, - I start "git bash"; - I navitage to certian directory; - I start `git gui&`; - I close the console window or press Ctrl+C. Git-gui's window disappears. Even if I used `git gui&disown`. Even if it is not in foreground when I pressed Ctrl+C. How to properly detach `git gui` from Windows console?

Original source