Pertanyaan Bagaimana cara melepaskan "git gui" dimulai pada "Git bash" pada Windows?


Sebagai contoh,

  1. Saya memulai "git bash";
  2. Saya navitage ke direktori certian;
  3. saya mulai git gui&;
  4. Saya menutup jendela konsol atau menekan Ctrl + C.

Jendela Git-gui menghilang. Bahkan jika saya menggunakannya git gui&disown. Bahkan jika tidak di latar depan ketika saya menekan Ctrl + C.

Bagaimana cara melepaskan dengan benar git gui dari konsol Windows?


5
2018-04-02 12:02


asal


Jawaban:


Untuk kepentingan yang lain saya akan memberikan jawaban yang lebih umum terkait keduanya git bash dan msys bash.

Solusi 1: Lepaskan tanpa stdout

Asumsikan Anda ingin melepaskan aplikasi:

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

yang tidak menampilkan info apa pun yang ingin Anda ambil ke stdout (atau stderr).
gunakan di shell bash Windows Anda:

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

MyApp akan berjalan di jendela terpisah dan menutup bash shell panggilan tidak akan mempengaruhinya (secara umum seperti daemon Linux).

Seperti disebutkan, Anda tidak dapat membaca pesan aplikasi kecuali jika mereka adalah pesan dialog, oleh karena itu solusi ini cocok untuk aplikasi GUI. Bagaimanapun juga, jika MyApp.exe bukan file batch Windows seperti MyApp.cmd, itu akan memanggil host cmd.exe dan log di sana: singkatnya Anda akan membaca output untuk kasus .cmd / .bat.

Pengguna yang menyukai Mac

Itu cmd.exe jendela akan berkedip-kedip untuk sesaat. Jika ini tidak keren untuk Anda (pengguna r), di baris atas ganti cmd dengan cmdow, NirCmd atau sejenisnya.

Solusi 2: Lepaskan dengan stdout

Jika Anda ingin membaca log ke stdout dan stderr, gunakan:

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

Alternatif ini sebagian besar disarankan jika MyApp adalah aplikasi konsol. Sekarang Anda mendapatkan daemon dengan "rumah". MyApp akan dijalankan oleh yang kedua cmd.exe dan Anda akan melihat di sini hasilnya.
Untuk aplikasi GUI, Anda mengakhiri dengan dua jendela: jendela MyApp dan jendela cmd panggilan.

Dalam kedua kasus, keluar dari MyApp tidak berarti menutup jendela cmd; sementara menutup jendela cmd hanya akan menutup konsol MyApp.

Jika pukulan yang berkedip menyerang Anda, di sini Anda hanya perlu mengganti yang pertama cmd, yang kedua adalah rumah visibilitas daemon Anda.

Solusi 3: Lepaskan aplikasi sentris dokumen

Beberapa dokumen terkait erat dengan beberapa aplikasi pemrosesan, melalui mekanisme yang menyerupai sintaks Linux shebang, tetapi berdasarkan pada registry Windows; jadi Anda membuka dokumen tanpa memanggil aplikasi terkait.

Perilaku ini dapat ditiru dalam bash dan bahkan dalam gaya terpisah.

Adapun aplikasi tidak perlu output ke stdout dan stderr, membuka MyApp.doc dengan:

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

dapat disederhanakan menjadi:

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

Untuk aplikasi yang membutuhkan stdout dan output stderr,

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

dapat direduksi menjadi:

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

3
2017-12-30 16:26



Perintah berikut berfungsi untuk saya dari "git bash":

git gui </dev/null >/dev/null 2>&1 &

Saya mencoba Ctrl+C, Ctrl+D dan hanya menutup jendela konsol. git gui tetap terbuka dalam semua kasus.


2
2017-09-30 13:27



Jika gitgui sudah dimulai, Anda bisa disown pekerjaan agar tidak berakhir dengan konsol:

disown -h <jobid>

Jika Anda ingin melakukannya ketika Anda mulai Git GUI (jadi Anda hanya memulai dan melupakan) ada nohuptetapi untuk alasan yang tidak diketahui itu tidak dalam binari yang didistribusikan oleh MsysGit


1
2018-04-02 12:05



Berdasarkan jawaban Antonio, saya telah menemukan resep berikut ini:

cmd //c start //D "C:\Program Files\Git\bin" "wish.exe" "C:\Program Files\Git\libexec\git-core\git-gui"

Ia bekerja, seperti dapat diuji dengan menekan Ctrl-D di shell. Shell menutup dengan benar dan git gui terus bekerja.

Kelemahan: solusi ini mengabaikan direktori saat ini dan membuka git gui di C:\Program Files\Git\bin direktori, bukan di direktori saat ini.

Orang mungkin berpendapat bahwa git gui pada Windows mengingat repositori baru-baru ini sehingga hanya dengan sekali klik. Benar, tetapi pertanyaannya adalah: bagaimana cara memisahkan diri git gui di direktori saat ini ...

Saya telah mencoba beberapa varian untuk memperbaiki kekurangannya, tetapi tidak ada yang benar-benar memuaskan.

Yang di bawah ini selalu bertanya apa yang harus dibuka git gui dengan. Memilih "C: \ Program Files \ Git \ bin \ wish.exe" dalam pemilih file berfungsi tetapi harus dilakukan setiap saat.

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"

Adakah yang bisa mengerti apa yang terjadi dan / atau meningkatkan itu?


1
2017-11-18 19:41