Bagaimana saya bisa mengatur editor untuk bekerja dengan Git di Windows?


561

Saya mencoba Git di Windows . Saya sampai pada titik mencoba "git commit" dan saya mendapat kesalahan ini:

Terminal bodoh tetapi tidak ada VISUAL atau EDITOR yang ditentukan. Harap berikan pesan menggunakan opsi -m atau -F.

Jadi saya tahu saya perlu memiliki variabel lingkungan yang disebut EDITOR. Tidak masalah. Saya mengaturnya untuk menunjuk ke Notepad. Itu berhasil, hampir. Pesan komit default terbuka di Notepad. Tetapi Notepad tidak mendukung feed garis kosong. Saya keluar dan mendapatkan Notepad ++ , tapi saya tidak tahu bagaimana caranya agar Notepad ++ diatur %EDITOR%sedemikian rupa sehingga berfungsi dengan Git seperti yang diharapkan.

Saya belum menikah dengan Notepad ++. Pada titik ini saya tidak keberatan editor apa yang saya gunakan. Saya hanya ingin dapat mengetik pesan komit di editor daripada baris perintah (dengan -m).

Anda yang menggunakan Git di Windows: Alat apa yang Anda gunakan untuk mengedit pesan komit Anda, dan apa yang harus Anda lakukan untuk membuatnya berfungsi?


7
TLDR: berikan tanda kutip tunggal di sekitar jalur ke editor yang dapat dieksekusi
yoyo

Mungkin tidak membantu, tetapi FWIW, saya hanya menggunakan notepad biasa. Saya tidak melakukan apa pun untuk membuatnya bekerja. Itu hanya bekerja di luar kotak secara default ...
BrainSlugs83

11
Perbarui September 2015: simpel git config core.editor notepadsekarang sudah cukup. Lihat jawaban saya yang diperbarui di bawah ini .
VonC

Hanya catatan singkat bahwa JEdit bukan editor yang tepat untuk git. JEdit hanya membuka satu instance bahkan untuk banyak file. Jika sudah terbuka, git akan menyebabkannya membuka file baru, tetapi kemudian Anda harus benar-benar menutup JEdit sebelum git akan melanjutkan. Tidak ada opsi baris perintah untuk menyebabkan JEdit untuk membuka contoh terpisah untuk mengedit pesan komit.
GrantRobertson

Jika ada orang yang menyukai Sublime Text 3, inilah instruksi saya untuk mengonfigurasikannya untuk Windows ... dan Linux juga: Pengaturan terbaik untuk Sublime Text 3 sebagai editor git Anda (instruksi Windows & Linux) . @yoyo, TLDR untuk menggunakan editor teks apa pun: letakkan tanda kutip tunggal di sekitar jalan ke editor yang dapat dieksekusi DAN gunakan garis miring ke depan (/) JANGAN sertakan garis miring (\) dalam nama jalur ke jendela yang dapat dieksekusi.
Gabriel Staples

Jawaban:


562

Pembaruan September 2015 (6 tahun kemudian)

The rilis terakhir dari git-untuk-windows (2.5.3) sekarang termasuk:

Dengan mengkonfigurasi git config core.editor notepad, pengguna sekarang dapat menggunakan notepad.exesebagai editor default mereka .
Konfigurasi git config format.commitMessageColumns 72akan diambil oleh pembungkus notepad dan membungkus baris komit setelah pengguna mengeditnya.

Lihat commit 69b301b oleh Johannes Schindelin ( dscho) .

Dan Git 2.16 (Q1 2018) akan menampilkan pesan untuk memberi tahu pengguna bahwa ia menunggu pengguna untuk menyelesaikan pengeditan saat menelurkan editor, jika editor membuka ke jendela tersembunyi atau di suatu tempat yang tidak jelas dan pengguna tersesat.

Lihat komit abfb04d (07 Des 2017), dan komit a64f213 (29 Nov 2017) oleh Lars Schneider ( larsxschneider) .
Dibantu-oleh: Junio ​​C Hamano ( gitster) .
(Digabung oleh Junio ​​C Hamano - gitster- dalam komit 0c69a13 , 19 Des 2017)

launch_editor(): menunjukkan bahwa Git menunggu input pengguna

Ketika grafis GIT_EDITORdihasilkan oleh perintah Git yang membuka dan menunggu input pengguna (misalnya " git rebase -i"), maka jendela editor mungkin dikaburkan oleh jendela lain.
Pengguna mungkin dibiarkan menatap ke jendela terminal Git yang asli tanpa menyadari bahwa ia perlu berinteraksi dengan jendela lain sebelum Git dapat melanjutkan. Untuk pengguna ini Git tampak menggantung.

Cetak pesan bahwa Git sedang menunggu input editor di terminal asli dan singkirkan ketika editor kembali, jika terminal mendukung menghapus baris terakhir


Jawaban asli

Saya baru saja mengujinya dengan git versi 1.6.2.msysgit.0.186.gf7512 dan Notepad ++ 5.3.1

Saya lebih suka tidak harus menetapkan variabel EDITOR, jadi saya mencoba:

git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\""
# or
git config --global core.editor "\"c:\Program Files\Notepad++\notepad++.exe\" %*"

Itu selalu memberi:

C:\prog\git>git config --global --edit
"c:\Program Files\Notepad++\notepad++.exe" %*: c:\Program Files\Notepad++\notepad++.exe: command not found
error: There was a problem with the editor '"c:\Program Files\Notepad++\notepad++.exe" %*'.

Jika saya mendefinisikan npp.bat termasuk:

"c:\Program Files\Notepad++\notepad++.exe" %*

dan saya mengetik:

C:\prog\git>git config --global core.editor C:\prog\git\npp.bat

Itu hanya bekerja dari sesi DOS, tetapi tidak dari shell git .
(bukan dengan mekanisme konfigurasi core.editor, skrip dengan " start /WAIT..." di dalamnya tidak akan berfungsi, tetapi hanya membuka jendela DOS baru)


Jawaban Bennett menyebutkan kemungkinan untuk menghindari menambahkan skrip, tetapi untuk merujuk langsung program itu sendiri di antara kutipan sederhana . Perhatikan arah garis miring! Gunakan /BUKAN \untuk memisahkan folder dalam nama jalur!

git config --global core.editor \
"'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Atau jika Anda berada di sistem 64 bit:

git config --global core.editor \
"'C:/Program Files (x86)/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Tapi saya lebih suka menggunakan skrip (lihat di bawah): dengan begitu saya bisa bermain dengan jalur yang berbeda atau opsi yang berbeda tanpa harus mendaftar lagi a git config.


Solusi aktual (dengan skrip) adalah untuk menyadari bahwa:
apa yang Anda rujuk dalam file konfigurasi sebenarnya adalah /bin/shskrip shell ( ) , bukan skrip DOS.

Jadi apa yang berhasil adalah:

C:\prog\git>git config --global core.editor C:/prog/git/npp.bat

dengan C:/prog/git/npp.bat:

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst "$*"

atau

#!/bin/sh
"c:/Program Files/Notepad++/notepad++.exe" -multiInst -notabbar -nosession -noPlugin "$*"

Dengan pengaturan itu, saya dapat melakukan ' git config --global --edit' dari DOS atau Git Shell, atau saya dapat melakukan ' git rebase -i ...' dari DOS atau Git Shell.
Perintah bot akan memicu instance baru notepad ++ (karenanya -multiInstopsi '), dan menunggu instance itu ditutup sebelum melanjutkan.

Perhatikan bahwa saya hanya menggunakan '/', bukan \'. Dan saya menginstal msysgit menggunakan opsi 2. (Tambahkan git\bindirektori ke PATHvariabel lingkungan, tetapi tanpa mengesampingkan beberapa alat windows built-in)

Fakta bahwa pembungkus notepad ++ disebut .bat tidak penting.
Akan lebih baik untuk menamainya 'npp.sh' dan memasukkannya ke [git]\cmddirektori (atau di direktori mana pun yang dirujuk oleh variabel lingkungan PATH Anda).


Lihat juga:


lightfire228 menambahkan dalam komentar :

Bagi siapa pun yang memiliki masalah ketika N ++ hanya membuka file kosong, dan git tidak menerima pesan komit Anda, lihat " Membatalkan komit karena pesan kosong ": ubah file Anda .batatau .shkatakan:

"<path-to-n++" .git/COMMIT_EDITMSG -<arguments>. 

Itu akan memberitahu notepad ++ untuk membuka file temp commit, daripada yang baru kosong.


Dalam skrip shell Anda, Anda perlu tanda kutip ganda sekitar $ *, jika tidak, itu tidak akan berfungsi dengan baik untuk jalur dengan spasi di dalamnya. Terima kasih atas penjelasan menyeluruh - Saya menginstal git (dan banyak hal lainnya) pada Windows untuk memulai programmer, dan baris perintah cukup sulit untuk grok tanpa membuat mereka belajar perintah vi.
Sarah Mei


1
Mengikuti jawaban Bennett Anda tidak perlu membuat skrip, Anda bisa menggunakan tanda kutip 'di dalam tanda kutip ".
Tobias Kienzler

@Tobias: benar, saya telah memasukkan jawabannya di dalam milik saya, serta alasan mengapa saya masih lebih suka merujuk skrip ke git configpengaturan saya .
VonC

6
@NateGlenn Gunakan dir /Xpadanan yang dipersingkat : " PROGRA~2" untuk " Program Files (x86)", yang merupakan kebiasaan yang baik untuk digunakan saat menggunakan alat yang kompatibel dengan lintas platform di Windows, yang memungkinkan Anda untuk menghancurkan spasi.
JJ Zabkar

300

Membangun jawaban Darren , untuk menggunakan Notepad ++ Anda cukup melakukan ini (semuanya dalam satu baris):

git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Jelas, C:/Program Files/Notepad++/notepad++.exebagian tersebut harus menjadi jalur ke Notepad ++ yang dapat dieksekusi di sistem Anda. Sebagai contoh, mungkin saja C:/Program Files (x86)/Notepad++/notepad++.exe.

Ini berfungsi seperti pesona bagi saya.


10
Saya juga! BTW, sakelar-sakelar tersebut dijelaskan di C: / Program Files / Notepad ++ / user.manual / dokumentasi / notepad-user-manual / command-line.html
Andrew Swan

23
Tonton Notepad ++ yang berlokasi di `C: \ Program Files (x86)`
mindless.panda

8
Untuk perubahan x64 Windows ke: git config --global core.editor "'C: / Program Files (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Saya menyadari saya terlambat ke pesta ini, tetapi karena penasaran, apakah ada yang tahu (atau bahkan ingat, setelah bertahun-tahun) mengapa orang akan menentukan "-notabbar"? Saya mengerti alasan di balik parameter lain (well, tidak yakin mengapa "-noPlugin", sebenarnya), tetapi tidak yang satu ini.
Wilson F

11
@ WillsonF Alasannya adalah karena Anda HARUS keluar dari notepad ++ agar git berhenti menunggu input Anda dan melanjutkan. Anda tidak ingin membuka tab lain dalam contoh Notepad ++ ini karena sesi git Anda akan tampak membeku! Pengaturan tersebut melakukan hal yang benar: jika Anda memiliki Notepad ++ sudah terbuka, Anda mendapatkan contoh baru, itu tidak memungkinkan Anda membuka file lain, dan bahwa Anda harus menutup ketika selesai dengan agar git tahu Anda selesai mengedit . Bekerja sama untuk melakukan komit.
ErikE

50

Bagaimanapun, saya baru saja bermain-main dengan ini dan menemukan hal berikut ini berfungsi dengan baik untuk saya:

git config --global core.editor "'C:/Program Files/TextPad 5/TextPad.exe' -m"

Saya tidak berpikir CMD suka tanda kutip tunggal sehingga Anda harus menggunakan tanda kutip ganda "untuk menentukan argumen string ruang yang tertanam".

Cygwin (yang saya percaya adalah platform yang mendasari Git's Bash) di sisi lain suka keduanya 'dan "; Anda dapat menentukan jalur seperti CMD, menggunakan /bukan \, selama string dikutip yaitu dalam contoh ini, menggunakan tanda kutip tunggal.

The -mmenimpa / menunjukkan penggunaan beberapa editor dan tidak ada kebutuhan untuk %*tertempel di akhir.


Terima kasih atas penjelasan penawaran tunggal / ganda, masuk akal sekarang!
Patrick McDonald

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"bekerja seperti pesona bagi saya.
Vlad Holubiev

Saya menggunakan `git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, namun ketika saya menjalankan "git commit" akan terbuka editor Notepad. Adakah pemikiran mengapa ini akan terjadi? Terima kasih sebelumnya.
Ryan Chase

@RyanChase Hapus entri konfigurasi lokal dari ./git/config misalnyaeditor = notepad
Ricky Boyce

1
Git Bash berjalan di bawah MingW64, bukan Cygwin. Cygwin memiliki biner Git sendiri.
Hans Deragon

27

Sunting: Setelah memperbarui ke Vim 7.3, saya sampai pada kesimpulan bahwa cara terbersih dan termudah untuk melakukan ini adalah:

  1. Tambahkan folder utama Vim ke jalur Anda (klik kanan pada My ComputerPropertiesAdvancedVariabel Lingkungan )

  2. Jalankan ini:

    git config --global core.editor "gvim --nofork '%*'"
    

Jika Anda melakukannya dengan cara ini, maka saya cukup yakin itu akan bekerja dengan Cygwin juga.

Jawaban asli:

Bahkan dengan beberapa jawaban yang berhubungan dengan Vim, saya mengalami kesulitan untuk menjalankannya dengan gVim di Windows (walaupun tidak menggunakan file batch atau% EDITOR% atau Cygwin).

Apa yang akhirnya saya dapatkan adalah bagus dan bersih, dan menarik dari beberapa solusi di sini:

git config --global core.editor \
"'C:/Program Files/Vim/vim72/gvim.exe' --nofork '%*'"

Salah satu yang perlu saya lakukan adalah ini bukan backslash bergaya Windows. Itu adalah garis miring ke depan yang normal.


1
Jika vim diinstal Program Files(x86), maka Anda perlu mengubah path dengan jelas.
Swapnil

15

Notepad ++ berfungsi dengan baik, meskipun saya memilih untuk tetap menggunakan Notepad, -m, atau bahkan kadang-kadang "edit."

Masalah yang Anda temui menggunakan Notepad ++ terkait dengan bagaimana Git meluncurkan editor yang dapat dieksekusi. Solusi saya untuk ini adalah mengatur variabel lingkungan EDITORke file batch, daripada executable editor yang sebenarnya, yang melakukan hal berikut:

start /WAIT "E:\PortableApps\Notepad++Portable\Notepad++Portable.exe" %*

/WAITmemberitahu sesi baris perintah untuk berhenti sampai aplikasi keluar, sehingga Anda akan dapat mengedit sesuka hati Anda sementara Git dengan senang hati menunggu Anda. % * meneruskan semua argumen ke file batch ke Notepad ++.

C:\src> echo %EDITOR%
C:\tools\runeditor.bat

Saya kesulitan membuat ini bekerja di bawah PowerShell. Metode ini ( stackoverflow.com/questions/10564/… ) bekerja dengan baik.
Peter Stephens

11

WordPad !

Saya senang menggunakan Vim, tetapi karena saya mencoba memperkenalkan Git ke perusahaan saya menginginkan sesuatu yang kita semua miliki, dan menemukan bahwa WordPad tampaknya berfungsi dengan baik (yaitu Git menunggu sampai Anda selesai mengedit dan menutup. jendela).

git config core.editor '"C:\Program Files\Windows NT\Accessories\wordpad.exe"'

Itu menggunakan Git Bash di msysgit; Saya belum mencoba dari command prompt Windows (jika ada bedanya).


Saya suka kesederhanaan ini, tetapi itu tidak berhasil bagi saya di luar kotak. Inilah yang saya coba. Saya menerima pesan galat berikut: galat: Ada masalah dengan editor 'C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe'.
Shaun Luttin

3
Kutipan salah. Anda harus meletakkan tanda kutip ganda di luar tanda kutip tunggal . Yaitu, gunakan "'C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe'", dan kemudian akan berfungsi.
Shaun Luttin

Anda juga dapat mengambil manfaat dari garis miring ke depan (/) daripada garis miring terbalik (\).
Chris Jones

1
Juga, mungkin lebih baik menggunakan "git config - global" daripada hanya "git config" untuk ini. Anda kemungkinan besar menginginkan pengaturan untuk diterapkan ke semua repositori git di workstation Anda, bukan hanya di tempat Anda berada sekarang.
Chris Jones

@ ChrisJones, Tidak ada gunanya dalam hal ini karena "file program" memiliki ruang di antara itu.
Pacerier

9

Saya juga menggunakan Cygwin pada Windows, tetapi dengan gVim (sebagai lawan dari terminal berbasis Vim ).

Untuk membuat ini berhasil, saya telah melakukan yang berikut:

  1. Membuat file batch satu baris (bernama git_editor.bat) yang berisi yang berikut: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Ditempatkan git_editor.batdi dalam saya PATH.
  3. Set GIT_EDITOR=git_editor.bat

Dengan ini git commit,, dll. Dengan benar akan memanggil gVim yang dapat dieksekusi.

CATATAN 1: --noforkOpsi untuk gVim memastikan bahwa itu memblokir sampai pesan komit telah ditulis.

CATATAN 2: Kutipan di sekitar jalur ke gVim diperlukan jika Anda memiliki spasi di jalur.

CATATAN 3: Kutipan di sekitar "% *" diperlukan untuk berjaga-jaga jika Git melewati jalur file dengan spasi.


Untuk orang-orang yang menggunakan msysgit (bukan cygwin git) saya bisa menyederhanakan ini sedikit. stackoverflow.com/questions/10564/…
Nick Knowlson

Setelah dipikir-pikir itu mungkin berhasil dengan cygwin juga, saya tidak sepenuhnya yakin
Nick Knowlson

8

Berkat komunitas Stack Overflow ... dan sedikit riset saya bisa mendapatkan editor favorit saya, EditPad Pro , untuk bekerja sebagai editor inti dengan msysgit 1.7.5.GIT dan TortoiseGit v1.7.3.0 melalui Windows XP SP3. ..

Mengikuti saran di atas, saya menambahkan path ke skrip Bash untuk editor kode ...

git config --global core.editor c:/msysgit/cmd/epp.sh

Namun, setelah beberapa upaya gagal pada solusi yang disebutkan di atas ... Saya akhirnya bisa mendapatkan ini berfungsi. Per dokumentasi EditPad Pro, menambahkan bendera '/ berita baru' akan memungkinkan shell untuk menunggu input editor ...

Bendera ' / berita baru ' adalah kunci dalam kasus saya ...

#!/bin/sh
"C:/Program Files/JGsoft/EditPadPro6/EditPadPro.exe" //newinstance "$*"

Ya, garis miring ganda untuk parameter masuk baru harus di dokumen Editpad. Terima kasih telah mencatatnya di sini!
gwideman

EditPad Pro membutuhkan saklar baris perintah ingin /newinstancememiliki satu garis miring yang persis sama. Ini cukup normal untuk aplikasi Windows. Jika Anda menggunakan EditPad dari shell UNIX maka Anda harus menggunakan mekanisme apa pun yang ditawarkan shell Anda untuk menghindari garis miring sehingga tidak melihat sakelar sebagai jalur absolut dan memberikan garis miring ke depan secara literal ke baris perintah EditPad.
Jan Goyvaerts

2
Jika Anda memiliki EditPad Pro 7, dan Anda ingin mengaktifkan EditPad Pro dari proses yang ingin menunggu proses EditPad, maka Anda harus meneruskan /waitsakelar pada baris perintah EditPad. Anda dapat menggunakan /waitdengan atau tanpa /newinstanceuntuk mengontrol apakah jendela EditPad baru harus dibuka atau apakah jendela yang ada harus digunakan kembali. Proses yang diluncurkan oleh skrip Anda akan menunggu file untuk ditutup terlepas dari apakah sebuah jendela dibuat atau digunakan kembali. EditPad Pro 6 dan sebelumnya tidak mendukung /wait.
Jan Goyvaerts

@JanGoyvaerts ~ Terima kasih atas /waittipnya, Pak ... :)
Eddie B

Saya tidak dapat membuat EditPad Lite berfungsi untuk saya dengan menggunakan instruksi di atas. Mungkin itu karena saya mencoba memohon EditPad (melalui Git) dengan menggunakan terminal Windows daripada Git Bash atau shell UNIX lainnya. Apa yang berhasil bagi saya adalah mengedit langsung [core]bagian .gitconfig untuk memasukkan baris editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

Untuk Atom bisa Anda lakukan

git config --global core.editor "atom --wait"

dan serupa untuk Visual Studio Code

git config --global core.editor "code --wait"

yang akan membuka jendela Atom atau Visual Studio Code untuk Anda lakukan melalui,

atau untuk Teks Sublim :

git config --global core.editor "subl -n -w"

Jauh lebih sederhana dan efektif. Terima kasih.
rom5jp

6

Edit file .gitconfig di c: \ Users \ YourUser folder dan tambahkan:

[core]
editor = 'C:\\Program files\\path\\to\\editor.exe'

6

Ini adalah salah satu gejala dari masalah yang lebih besar. Khususnya Anda memiliki pengaturan sesuatu TERM=dumb. Hal lain yang tidak berfungsi dengan baik adalah lessperintah yang mengatakan Anda tidak memiliki terminal yang berfungsi penuh.

Sepertinya ini paling sering disebabkan oleh memiliki JANGKA diatur ke sesuatu dalam variabel lingkungan Windows global Anda. Bagi saya, masalah muncul ketika saya menginstal Strawberry Perl beberapa informasi tentang ini pada bug msysgit untuk masalah ini serta beberapa solusi.

Solusi pertama adalah memperbaikinya di ~ / .bashrc Anda dengan menambahkan:

export TERM=msys

Anda dapat melakukan ini dari prompt Git Bash seperti:

echo "export TERM=msys" >> ~/.bashrc

Solusi lain, yang pada akhirnya adalah apa yang saya lakukan karena saya tidak peduli tentang alasan Strawberry Perl untuk menambahkan TERM=dumbke pengaturan lingkungan saya, adalah pergi dan menghapus TERM=dumbseperti yang diarahkan dalam komentar ini pada laporan bug msysgit .

Control Panel / System / Advanced / Environment Variables ... (atau serupa, tergantung pada versi Windows Anda) adalah tempat variabel lingkungan lengket ditetapkan pada Windows. Secara default, TERM tidak disetel. Jika JANGKA diatur di sana, maka Anda (atau salah satu program yang telah Anda instal - misalnya Strawberry Perl) telah mengaturnya. Hapus pengaturan itu, dan Anda akan baik-baik saja.

Demikian pula jika Anda menggunakan Strawberry Perl dan peduli tentang klien CPAN atau sesuatu seperti itu, Anda dapat membiarkannya TERM=dumbsendiri dan menggunakannya unset TERMdalam file ~ / .bashrc Anda yang akan memiliki efek yang mirip dengan pengaturan istilah eksplisit seperti di atas.

Tentu saja, semua solusi lain sudah benar yang dapat Anda gunakan git config --global core.editor $MYFAVORITEEDITORuntuk memastikan bahwa Git menggunakan editor favorit Anda ketika perlu meluncurkan satu untuk Anda.


Terima kasih banyak! Aku punya masalah ini karena perl Strawberry dan itu membuatku gila! Terima kasih untuk menunjukkan ini
Dmitry Avtonomov


4

Saya memiliki PortableGit 1.6 bekerja dengan baik, tetapi setelah upgrade ke rilis PortableGit 1.7 Windows, saya punya masalah. Beberapa perintah Git membuka Notepad ++. Exe baik-baik saja, tetapi beberapa tidak, terutama Git rebase berperilaku berbeda.

Masalahnya adalah beberapa perintah menjalankan proses cmd Windows dan beberapa menggunakan proses cmd Unix. Saya ingin memberikan atribut startup ke editor Notepad ++, jadi saya harus memiliki skrip yang disesuaikan. Solusi saya adalah ini.

  1. Buat skrip untuk menjalankan editor teks yang sesuai. Scriptnya terlihat aneh, tetapi menangani variasi Windows dan Unix.

    c: /PortableGit/cmd/git-editor.bat

    #!/bin/sh
    # Open a new instance
    
    function doUnix() {
      "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar $*
      exit
    }
    
    doUnix $*
    
    :WINCALL
    "c:\program files\notepad++\notepad++.exe" -multiInst -nosession -notabbar %*
    
  2. Setel variabel core.editor global

    Script disimpan ke folder git / cmd, jadi sudah ada di jalur gitconsole. Ini wajib karena jalur penuh mungkin tidak berfungsi dengan baik.

    git config --global core.editor "git-editor.bat"
    

Sekarang saya dapat menjalankan git commit -a dan git rebase -i perintah master . Cobalah jika Anda memiliki masalah dalam alat Git Windows.


4

Saya menggunakan Git pada banyak platform, dan saya suka menggunakan pengaturan Git yang sama pada semuanya. (Sebenarnya, saya memiliki semua file konfigurasi saya di bawah kontrol rilis dengan Git, dan menempatkan klon repositori Git pada setiap mesin.) Solusi yang saya buat adalah ini:

Saya mengatur editor saya ke giteditor

git config --global core.editor giteditor

Lalu saya membuat tautan simbolis yang disebut giteditor yang ada di PATH saya . (Saya memiliki direktori tempat sampah pribadi , tetapi di mana pun di PATH berfungsi.) Tautan itu menunjuk ke editor pilihan saya saat ini. Pada mesin yang berbeda dan platform yang berbeda, saya menggunakan editor yang berbeda, jadi ini berarti saya tidak perlu mengubah konfigurasi universal Git saya ( .gitconfig ), hanya tautan yang ditunjuk oleh giteditor .

Tautan simbolik ditangani oleh setiap sistem operasi yang saya kenal, meskipun mereka mungkin menggunakan perintah yang berbeda. Untuk Linux, Anda menggunakan ln -s . Untuk Windows, Anda menggunakan cmd built-in mklink . Mereka memiliki sintaks yang berbeda (yang harus Anda perhatikan), tetapi semuanya bekerja dengan cara yang sama, sungguh.


Sebenarnya, saya mencoba ini pada Windows7 dan tidak berfungsi dari msys git. Dikatakanerror: cannot spawn giteditor: No such file or directory
DanielSank

4

Berdasarkan saran VonC , ini berhasil untuk saya (membuat saya gila):

git config --global core.editor "'C:/Program Files (x86)/Sublime Text 3/subl.exe' -wait"

Menghilangkan -waitdapat menyebabkan masalah, terutama jika Anda bekerja dengan Gerrit dan mengubah id yang harus disalin secara manual ke bagian bawah pesan komit Anda.


4

Saya perlu melakukan kedua hal berikut untuk membuat Git meluncurkan Notepad ++ di Windows:

  • Tambahkan yang berikut ini ke .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Ubah pintasan untuk meluncurkan shell Git Bash untuk dijalankan sebagai administrator, lalu gunakan itu untuk meluncurkan shell Git Bash. Saya menduga entri menu konteks "Git Bash di sini" tidak meluncurkan Notepad ++ dengan izin yang diperlukan.

Setelah melakukan kedua hal di atas, itu berhasil.


3

Saya menggunakan Cygwin di Windows, jadi saya menggunakan:

export EDITOR="emacs -nw"

Ini -nwuntuk no-windows, yaitu memberitahu Emacs untuk tidak mencoba dan menggunakan X Window .

Pengikat kunci Emacs tidak berfungsi untuk saya dari shell Windows, jadi saya hanya akan menggunakan ini dari shell Cygwin ... ( rxvt disarankan.)


3

Ini adalah pengaturan saya untuk menggunakan Geany sebagai editor untuk Git:

git config --global core.editor C:/path/to/geany.bat

dengan konten berikut di geany.bat:

#!/bin/sh
"C:\Program Files\Geany\bin\Geany.exe" --new-instance "$*"

Ia bekerja di konsol DOS dan msysgit.


2
VonC menjawab tentang notepad ++, jawaban saya untuk Geany?
CharlesB

2

Sepertinya Git tidak akan menemukan editor jika ada spasi di path. Jadi, Anda harus meletakkan file batch yang disebutkan dalam jawaban Patrick ke jalur non-spasi putih.


3
Format ini berfungsi baik untuk path dengan spasi: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "" jadi mungkin praktis bagi Anda untuk menghindari membuat file batch
Carl

2

Saya kesulitan membuat Git bekerja sama dengan WordPad , Komodo Edit, dan hampir semua editor lain yang saya berikan. Paling terbuka untuk diedit, tetapi Git jelas tidak menunggu sampai save / close terjadi.

Sebagai penopang, saya baru saja melakukannya

git commit -m "Fixed the LoadAll method"

untuk menjaga hal-hal bergerak. Ini cenderung menjaga pesan komit saya sedikit lebih pendek dari seharusnya, tetapi jelas ada beberapa pekerjaan yang harus dilakukan pada Git versi Windows.

GitGUI juga tidak terlalu buruk. Dibutuhkan sedikit orientasi, tetapi setelah itu, ia bekerja dengan cukup baik.


2

Saya lebih suka menggunakan Emacs. Mengaturnya bisa sedikit rumit.

  1. Unduh Emacs dan bongkar di suatu tempat seperti c:\emacs.
  2. Lari c:\emacs\bin\addpm.exe. Anda perlu mengklik kanan dan "Jalankan sebagai Administrator" jika Anda menggunakan Windows Vista atau lebih tinggi. Ini akan menempatkan executable di jalur Anda.
  3. Tambahkan (server-start)suatu tempat di .emacsfile Anda . Lihat FAQ Windows Emacs untuk saran tentang tempat menyimpan .emacsfile Anda .
  4. git config --global core.editor emacsclientw

Git sekarang akan membuka file dalam proses Emacs yang ada. Anda harus menjalankan proses yang ada secara manual dari c:\emacs\bin\runemacs.exe.


1

Saya berhasil membuat versi lingkungan bekerja dengan mengatur variabel EDITOR menggunakan tanda kutip dan /:

EDITOR="c:/Program Files (x86)/Notepad++/notepad++.exe"

1

Saya baru saja mengalami masalah yang sama dan menemukan solusi yang berbeda. Saya mendapatkan

error: There was a problem with the editor 'ec'

Saya punya VISUAL=ec, dan file batch dipanggil ec.batdi jalur saya yang berisi satu baris:

c:\emacs\emacs-23.1\bin\emacsclient.exe %*

Ini memungkinkan saya mengedit file dari baris perintah dengan ec <filename>, dan memiliki VISUALset berarti sebagian besar program unixy mengambilnya juga. Git tampaknya untuk mencari jalan yang berbeda untuk perintah saya yang lain meskipun - ketika aku melihat sebuah git commitdi Proses Monitor saya melihat terlihat di setiap folder pada jalur untuk ecdan untuk ec.exe, tetapi tidak untuk ec.bat. Saya menambahkan variabel lingkungan lain ( GIT_EDITOR=ec.bat) dan semuanya baik-baik saja.


1

Saya menggunakan GitHub untuk Windows yang merupakan pilihan visual yang bagus. Tapi saya juga lebih suka baris perintah, jadi untuk membuatnya bekerja ketika saya membuka repositori di shell Git saya hanya mengatur yang berikut:

git config --global core.editor vim

bagus sekali.



1

Saya menemukan solusi sederhana yang diposting di sini - meskipun mungkin ada kesalahan di jalur di mana Anda harus menyalin file "subl" yang diberikan oleh penulis.

Saya menjalankan Windows 7 x64, dan saya harus meletakkan file "subl" di /Git/cmd/folder saya untuk membuatnya berfungsi.

Ini bekerja seperti pesona.


1

Atom dan Windows 10

  1. Saya mengklik kanan ikon Atom di desktop dan mengklik properti.
  2. Menyalin jalur lokasi "Mulai di"
  3. Tampak di sana dengan Windows Explorer dan menemukan "atom.exe".
  4. Saya mengetik ini di Git Bash:

    git config --global core.editor C:/Users/YOURNAMEUSER/AppData/Local/atom/app-1.7.4/atom.exe"
    

Catatan: Saya mengubah semua \untuk /. Saya membuat .bashrc di direktori home saya dan digunakan /untuk mengatur direktori home saya dan itu berhasil, jadi saya berasumsi /akan menjadi cara untuk pergi.


silakan periksa URL ini, akan berguna untuk meningkatkan kualitas konten Anda
Willie Cheng

@willie Terima kasih, saya memformat teks dan menambahkan beberapa tag. Semoga itu akan sedikit meningkat.
Jonathan Ramos

0

Inilah solusi dengan Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Jika tidak ada jalur, tidak ada jalur

  2. Jika jalur kosong, lewati jalur kosong

  3. Jika path tidak kosong, konversikan ke format Windows.

Lalu saya mengatur variabel-variabel ini:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR memungkinkan skrip bekerja dengan Git

  2. GIT_EDITOR memungkinkan skrip bekerja dengan perintah Hub

Sumber


0

Ini berfungsi untuk saya menggunakan Cygwin dan TextPad 6 (EDIT: ini juga bekerja dengan TextPad 5 selama Anda membuat perubahan yang jelas pada skrip), dan mungkin model tersebut dapat digunakan untuk editor lain juga:

File ~/.gitconfig:

[core]
    editor = ~/script/textpad.sh

File ~/script/textpad.sh:

#!/bin/bash

APP_PATH=`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`
FILE_PATH=`cygpath -w $1`

"$APP_PATH" -m "$FILE_PATH"

Satu garis ini juga berfungsi:

File ~/script/textpad.sh(opsi 2):

"`cygpath "c:/program files (x86)/textpad 6/textpad.exe"`" -m "`cygpath -w $1`"

0

Ini bekerja untuk saya:

  1. Tambahkan direktori yang berisi editor yang dapat dieksekusi ke variabel PATH Anda . (Misalnya "C: \ Program Files \ Sublime Text 3 \" )
  2. Nyalakan kembali komputer Anda.
  3. Ubah variabel global Git core.editor ke nama editor yang dapat dieksekusi tanpa ekstensi '.exe' (mis. Git config --global core.editor sublime_text)

Itu dia!

CATATAN: Sublime Text 3 adalah editor yang saya gunakan untuk contoh ini.


Ketika dikonfigurasi dengan cara ini, apakah Sublime Text 3 membuka banyak instance atau menangani fakta bahwa git memerlukannya untuk menutup untuk memberi sinyal pada akhir edit?
James World

1
Saya pikir itu akan membuka Window baru. Anda dapat menambahkan sakelar --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.