Windows'ta Git ile çalışacak bir düzenleyici nasıl ayarlayabilirim?


561

Windows'ta Git'i deniyorum . Ben "git commit" deneme noktasına var ve bu hatayı aldım:

Terminal aptal ama VISUAL veya EDITOR tanımlanmadı. Lütfen iletiyi -m veya -F seçeneğini kullanarak sağlayın.

Bu yüzden EDITOR adında bir ortam değişkenine ihtiyacım olduğunu anladım. Sorun değil. Not Defteri'ni gösterecek şekilde ayarladım. Neredeyse işe yaradı. Varsayılan işlem mesajı Not Defteri'nde açılır. Ancak Not Defteri çıplak satır yayınlarını desteklemez. Dışarı çıktım ve Notepad ++ aldım , ancak Notepad ++ 'ın %EDITOR%Git ile beklendiği gibi çalışacağı şekilde nasıl kurulacağını anlayamıyorum.

Notepad ++ ile evli değilim. Bu noktada hangi editörü kullandığım umrumda değil. Sadece komut satırından ziyade bir editörde taahhüt mesajları yazabilmek istiyorum -m.

Git'i Windows'ta kullananlarınız: İşleme iletilerinizi düzenlemek için hangi aracı kullanıyorsunuz ve çalışmasını sağlamak için ne yapmanız gerekiyordu?


7
TLDR: editör çalıştırılabilir yoluna tek tırnak işareti koyun
yoyo

Muhtemelen yararlı değil, ama FWIW, sadece normal not defteri kullanıyorum. Çalışması için hiçbir şey yapmadım. Sadece kutunun dışında varsayılan olarak çalıştı ...
BrainSlugs83

11
Eylül 2015 Güncellemesi: git config core.editor notepadArtık basit bir şey yeter. Aşağıdaki güncellenmiş cevabımı görün .
VonC

Sadece hızlı bir not JEdit git için uygun bir editör değildir. JEdit, birden çok dosya için bile yalnızca bir örneği açar. Zaten açıksa, git yeni bir dosya açmasına neden olur, ancak git devam etmeden önce JEdit'i tamamen kapatmanız gerekir. JEdit'in tamamlama mesajını düzenlemek için ayrı bir örnek açmasına neden olan komut satırı seçeneği yoktur.
GrantRobertson

Herkesin Sublime Text 3'ü sevmesi durumunda, Windows ve Linux için de nasıl yapılandırdığımla ilgili talimatlarım burada: Git editörünüz olarak Sublime Text 3 için en iyi ayarlar (Windows ve Linux talimatları) . @yoyo, TLDR herhangi bir metin düzenleyicisi kullanmak için: düzenleyicinin yürütülebilir yolunun etrafında tek tırnak koymak VE Windows yürütülebilir yol yolunda eğik çizgi (\) DEĞİL eğik çizgi (\) kullanın.
Gabriel Staples

Yanıtlar:


562

Eylül 2015 Güncellemesi (6 yıl sonra)

Git-için-Windows'un son sürümü (2.5.3) şimdi içerir:

Yapılandırarak git config core.editor notepad, kullanıcılar artık notepad.exevarsayılan düzenleyicileri olarak kullanabilirler .
Yapılandırma git config format.commitMessageColumns 72not defteri sarmalayıcı tarafından alınır ve kullanıcı düzenledikten sonra tamamlama mesajını satır kaydırır.

Bkz. Taahhüt : 69b301b , Johannes Schindelin ( dscho) .

Git 2.16 (1. Çeyrek 2018), editörün gizli bir pencereye veya belirsiz bir yere açılması ve kullanıcının kaybolması durumunda kullanıcıya bir düzenleyici oluştururken düzenlemeyi bitirmesini beklediğini bildiren bir mesaj gösterecektir.

Bkz. Taahhüt abfb04d (07 Aralık 2017) ve taahhüt a64f213 (29 Kasım 2017), Lars Schneider ( larsxschneider) .
Yardım eden: Junio ​​C Hamano ( gitster) .
(Göre Birleştirilmiş - Junio Cı Hamano gitster- içinde 0c69a13 tamamlama 2017 19 Ara)

launch_editor(): Git'in kullanıcı girdisini beklediğini belirtin

Bir grafik GIT_EDITOR, kullanıcı girişini (ör. " git rebase -i") Açan ve bekleyen bir Git komutu ile oluşturulduğunda , düzenleyici penceresi diğer pencereler tarafından gizlenebilir.
Kullanıcı, Git'in devam edebilmesi için başka bir pencereyle etkileşim kurması gerektiğini fark etmeden orijinal Git terminal penceresine bakmaya bırakılabilir. Bu kullanıcıya Git asılı görünür.

Git'in orijinal terminalde editör girişini beklediğini bildiren bir mesaj yazdırın ve terminal son satırı silmeyi destekliyorsa, editör döndüğünde ondan kurtulun


Orijinal cevap

Ben sadece git sürüm 1.6.2.msysgit.0.186.gf7512 ve Notepad ++ 5.3.1 ile test ettim

Ben tercih değil Denedim nedenle, bir EDİTÖR değişkeni ayarlamak zorunda:

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

Bu her zaman şunu verir:

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" %*'.

Aşağıdakileri içeren bir npp.bat tanımlarsam:

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

ve yazıyorum:

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

Sadece DOS oturumundan çalışır, ancak git kabuğundan çalışmaz .
(core.editor yapılandırma mekanizmasıyla, içinde " start /WAIT..." bulunan bir komut dosyası çalışmaz, yalnızca yeni bir DOS penceresi açar)


Bennett'in yanıtı , bir komut dosyası eklemekten kaçınma olasılığından bahsediyor, ancak basit alıntılar arasında doğrudan programın kendisine gönderme yapma olasılığından bahsediyor . Eğik çizgilerin yönüne dikkat edin! Yol adındaki klasörleri ayırmak için /DEĞİL kullanın \!

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

Veya 64 bit sistemdeyseniz:

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

Ama ben bir komut dosyası kullanmayı tercih ederim (aşağıya bakın): bu şekilde farklı yollar veya farklı seçeneklerle tekrar kayıt yapmadan oynayabilirim a git config.


Asıl çözüm (bir komut dosyası ile) şunu fark etmektir:
config dosyasında bahsettiğiniz şey aslında/bin/sh bir DOS komut dosyası değil, bir kabuk ( ) komut dosyasıdır.

İşe yarayan şey:

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

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

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

veya

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

Bu ayar ile git config --global --editDOS veya Git Shell'den yapabilirim git rebase -i ...veya DOS veya Git Shell'den yapabilirim.
Bot komutları yeni bir notepad ++ örneğini (dolayısıyla -multiInst'seçeneği) tetikler ve devam etmeden önce bu örneğin kapatılmasını bekler.

Sadece '/' kullandığımı unutmayın \. Ve seçenek 2'yi kullanarak msysgit'i yükledim. ( git\binDizini PATHortam değişkenine ekleyin , ancak bazı yerleşik Windows araçlarını geçersiz kılmadan )

Notepad ++ wrapper'ın .bat olarak adlandırılması önemli değildir.
Buna 'npp.sh' adını vermek ve [git]\cmddizine (veya PATH ortam değişkeniniz tarafından başvurulan herhangi bir dizine) koymak daha iyi olur .


Ayrıca bakınız:


lightfire228 ekler yorumlarda :

N ++ sadece senin taahhüt mesajı almak görmez Boş bir dosya açar ve git bir sorunu olan herkes için " durduruluyor nedeniyle boş iletiye taahhüt ": Yaptığınız değişiklik .batveya .shdosya söylemek:

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

Bu notepad ++ 'a boş yeni bir dosya yerine geçici birleştirme dosyasını açmasını söyler.


Kabuk komut dosyanızda $ * civarında çift tırnak işareti kullanmanız gerekir, aksi takdirde içinde boşluk bulunan yollar için düzgün çalışmaz. Ayrıntılı açıklama için teşekkürler - Git (ve bir sürü başka şey) Windows'a programcıları başlatmak için yüklüyorum ve komut satırı vi komutlarını öğrenmeden grok yapmak için yeterince zor.
Sarah Mei

Başka bir somut örnek: stackoverflow.com/questions/1634161/…
VonC

1
Bennett'in cevabını takiben bir senaryo oluşturmanıza gerek yok, sadece tırnak işaretleri içinde bir kesme işareti kullanabilirsiniz "
Tobias Kienzler

@Tobias: Doğru, cevabını benimkine ekledim ve hala git configayarlarımda bir senaryoya başvurmayı tercih etmemin nedeni .
VonC

6
@NateGlenn Windows'ta platformlar arası uyumlu araçları kullanırken içine girmenizi sağlayan iyi bir alışkanlık olan dir /X" PROGRA~2" for " Program Files (x86)" kısaltılmış eşdeğerini kullanın .
JJ Zabkar

300

Darren'ın cevabına dayanarak , Notepad ++ kullanmak için bunu yapabilirsiniz (hepsi bir satırda):

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

Açıkçası, C:/Program Files/Notepad++/notepad++.exebölüm sisteminizde Notepad ++ çalıştırılabilir dosyasının yolu olmalıdır. Örneğin, olabilir C:/Program Files (x86)/Notepad++/notepad++.exe.

Benim için bir cazibe gibi çalışıyor.


10
Ben de! BTW, bu anahtarlar C'de açıklanmıştır: / Program Files / Notepad ++ / user.manual / document / notepad-user-manual / command-line.html
Andrew Swan

23
Notepad ++ 'ın C: \ Program Files (x86) `da yer aldığını izleyin
mindless.panda

8
X64 Windows için: git config --global core.editor "'C: / Program Dosyaları (x86) / Notepad ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Bu partiye geç kaldığımı fark ettim, ama meraktan dolayı kimse neden "-notabbar" ı belirleyeceğini biliyor mu (hatta hatırlıyor)? Diğer parametrelerin arkasındaki mantığı anlıyorum (iyi, neden "-noPlugin" olduğundan emin değilim), ama bu değil.
Wilson F

11
@WilsonF Bunun nedeni, girişinizi beklemeyi durdurmak ve devam etmek için git için notepad ++ 'dan çıkmanız GEREKİR. Bu Notepad ++ örneğinde başka sekmeler açmak istemezsiniz çünkü o zaman git oturumunuz donmuş gibi görünür! Bu ayarlar tam olarak doğru olanı yapar: Notepad ++ zaten açıksa, diğer dosyaları açmanıza izin vermeyen yeni bir örnek alırsınız ve git'in düzenlemeyi bitirdiğini bilmesi için bittiğinde kapatmanız gerekir. . Tamamlama iletileri için de aynı şekilde çalışır.
ErikE

50

Her neyse, sadece bununla oynuyordum ve benim için güzel çalışmak için aşağıdakileri buldum:

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

Ben "boşluk gömülü dize argümanı belirtmek için" çift tırnak kullanmanız gerekir böylece CMD tek tırnak seviyor sanmıyorum.

Cygwin (Git'in Bash'in altında yatan platform olduğuna inanıyorum) her ikisini de seviyor 've" ; Eğer CMD benzeri kullanarak yolları, bir belirtebilirsiniz /yerine \kadar uzun dize bu durumda yani alıntı gibi, tek tırnak kullanarak.

-mGeçersiz kılar / çoklu editörler kullanımını gösterir ve gerek yoktur %*ucunda tacked.


Tek / çift teklif açıklaması için teşekkürler, şimdi mantıklı!
Patrick McDonald

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"benim için bir cazibe gibi çalışıyor.
Vlad Holubiev

`Git config --global code.editor" 'C: \\ Program Files \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "` yi kullandım, ancak "git commit" komutunu çalıştırdığımda açılır bir Not Defteri düzenleyicisi. Bunun neden böyle olacağına dair herhangi bir düşünce var mı? Şimdiden teşekkürler.
Ryan Chase

@RyanChase Yerel yapılandırma girişini ./git/config adresinden kaldırın örn.editor = notepad
Ricky Boyce

1
Git Bash, Cygwin yerine MingW64 altında çalışır. Cygwin'in kendi Git ikili dosyası vardır.
Hans Deragon

27

Düzenleme: Vim 7.3 güncelledikten sonra, bunu yapmanın en temiz ve kolay yolu olduğu sonucuna vardım:

  1. Vim'in ana klasörünü yolunuza ekleyin ( BilgisayarımÖzelliklerGelişmişOrtam Değişkenleri'ne sağ tıklayın )

  2. Bunu çalıştırın:

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

Bunu bu şekilde yaparsanız, Cygwin ile de çalışacağından eminim.

Orijinal cevap:

Vim ile ilgili birkaç cevapla bile, Windows altında gVim ile çalışmak için bir sorun yaşıyordum (bir toplu iş dosyası veya% EDITOR% veya Cygwin kullanmıyorken).

Sonunda geldiğim güzel ve temiz ve buradaki birkaç çözümden yararlanıyor:

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

Beni biraz zaman alan bir şey, bunlar Windows tarzı ters eğik çizgiler değil. Bunlar normal eğik çizgilerdir.


1
Vim yüklüyse Program Files(x86), yolu açıkça değiştirmeniz gerekir.
Swapnil

15

Notepad ++, Notepad, -m hatta bazen yerleşik "edit" ile yapışmayı seçmeme rağmen gayet iyi çalışıyor.

Notepad ++ kullanarak karşılaştığınız sorun Git'in yürütülebilir dosyayı nasıl başlattığıyla ilgilidir. Bunun benim çözümüm, ortam değişkenini EDITORasıl düzenleyici yürütülebilir yerine bir toplu iş dosyasına ayarlamaktır.

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

/WAITkomut satırı oturumuna uygulama çıkıncaya kadar durmasını söyler, böylece Git sizi mutlu bir şekilde beklerken kalbinizin içeriğini düzenleyebilirsiniz. % * tüm argümanları toplu iş dosyasına Notepad ++ 'a aktarır.

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

Bunu powershell altında çalıştırmakta güçlük çektim. Bu yöntem ( stackoverflow.com/questions/10564/… ) iyi çalıştı.
Peter Stephens

11

WordPad !

Vim'i kullanmaktan mutluyum, ancak Git'i şirkete tanıtmaya çalıştığımdan beri hepimizin sahip olacağı bir şey istedim ve WordPad'in iyi çalıştığını gördüm (yani Git, düzenleme ve kapatma işlemini bitirene kadar bekler pencere).

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

Msysgit'de Git Bash kullanıyor; (Bu herhangi bir fark yaparsa) Windows komut isteminden denemedim.


Bunun basitliğini beğendim, ama benim için kutudan çıkmadı. İşte denedim. Aşağıdaki hata iletisini alıyorum: hata: 'C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe' düzenleyicisinde bir sorun oluştu.
Shaun Luttin

3
Tırnak işaretleri yanlış. Çift tırnakları tek tırnakların dışına koymalısınız . Yani, "'C: \ Program Files \ Windows NT \ Accessories \ wordpad.exe'" kullanın ve daha sonra çalışacaktır.
Shaun Luttin

Ters eğik çizgi (\) yerine eğik çizgi (/) de kullanabilirsiniz.
Chris Jones

1
Ayrıca, bunun için sadece "git config" yerine "git config --global" kullanmak en iyisidir. Büyük olasılıkla, ayarın yalnızca şu anda bulunduğunuz alana değil, iş istasyonunuzdaki tüm git depolarına uygulanmasını istersiniz.
Chris Jones

@ChrisJones, "Program dosyaları" arasında boşluk olduğu için bu durumda bir nokta yok.
Pacerier

9

Windows'ta da Cygwin kullanıyorum, ancak gVim ile (terminal tabanlı Vim'in aksine ).

Bu işi yapmak için aşağıdakileri yaptım:

  1. git_editor.batAşağıdakileri içeren tek satırlı bir toplu iş dosyası (adlı ) oluşturuldu: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Yerleştirilmiş git_editor.batskinTenimde üzerinde PATH.
  3. Ayarlamak GIT_EDITOR=git_editor.bat

Bu yapıldığında, git commitvb. GVim yürütülebilir dosyasını doğru şekilde çağırır.

NOT 1: --noforkgVim seçeneği, taahhüt mesajı yazılana kadar engellenmesini sağlar.

NOT 2: Yolda boşluklar varsa, gVim yolundaki tırnak işaretleri gereklidir.

NOT 3: Git'in boşluklu bir dosya yolundan geçmesi durumunda "% *" etrafındaki tırnak işaretleri gereklidir.


Msysgit kullanan insanlar için (cygwin's git değil) bunu biraz basitleştirebildim. stackoverflow.com/questions/10564/…
Nick Knowlson

İkinci olarak cygwin ile de çalışabileceğini düşündüm, tam olarak emin değilim
Nick Knowlson

8

Stack Overflow topluluğu ve biraz araştırma sayesinde en sevdiğim editör EditPad Pro'yu elde edebildim Windows XP SP3 üzerinde msysgit 1.7.5.GIT ve TortoiseGit v1.7.3.0 ile çekirdek editör olarak çalıştırabildim. ..

Yukarıdaki tavsiyeyi takiben, kod düzenleyici için bir Bash komut dosyasının yolunu ekledim ...

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

Ancak, yukarıda belirtilen çözümlere yönelik birkaç başarısız girişimden sonra ... Sonunda bu çalışmayı başardım. EditPad Pro'nun belgelerine göre, '/ newinstance' bayrağını eklemek kabuğun editör girişini beklemesine izin verir ...

Benim durumumda ' / newinstance ' bayrağı anahtardı ...

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

Evet, newinstance parametresi için bu çift eğik çizgi Editpad'in belgelerinde olmalıdır. Burada kaydettiğiniz için teşekkürler!
gwideman

EditPad Pro /newinstance, tam olarak bir eğik çizgi olmasını isteyen komut satırı anahtarları gerektirir . Bu, Windows uygulamaları için oldukça normaldir. EditPad'i bir UNIX kabuğundan çağırıyorsanız, kabuğunuzun eğik çizgiden kaçmak için sunduğu mekanizmayı kullanmanız gerekir, böylece anahtarı mutlak bir yol olarak görmez ve EditPad'in komut satırına tek bir değişmez eğik çizgi iletir.
Jan Goyvaerts

2
EditPad Pro 7'niz varsa ve EditPad Pro'yu EditPad'in işleminde beklemek isteyen bir işlemden çağırmak istiyorsanız, /waitanahtarı EditPad'in komut satırına geçirmelisiniz. Yeni bir EditPad penceresinin açılıp açılmayacağını veya var olan bir pencerenin yeniden kullanılıp kullanılmayacağını kontrol etmek için /waitveya olmadan kullanabilirsiniz /newinstance. Komut dosyanız tarafından başlatılan işlem, bir pencere oluşturulup kullanılmadığına veya yeniden kullanılmasına bakılmaksızın dosyanın kapatılmasını bekleyecektir. EditPad Pro 6 ve önceki sürümleri desteklemez /wait.
Jan Goyvaerts

@JanGoyvaerts ~ /waitBayrak ucu efendim için teşekkürler ... :)
Eddie B

Yukarıdaki talimatları kullanarak EditPad Lite'ı benim için çalıştıramadım. Belki de Git Bash veya başka bir UNIX kabuğu yerine Windows terminalini kullanarak EditPad'i (Git üzerinden) çağırmaya çalışmamdı. Benim için işe [core]yarayan, satırı dahil etmek için doğrudan .gitconfig bölümünü düzenlemekti editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

İçin Atom Yapabileceğiniz

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

Studio Code için benzer ve benzer

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

Atom veya Visual Studio Kodunu açar penceresi açar,

veya Yüce Metin için :

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

Çok daha basit ve etkili. Teşekkür ederim.
rom5jp

6

.Gitconfig dosyasını c: \ Users \ YourUser klasöründe düzenleyin ve ekleyin:

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

6

Bu daha büyük sorunların bir belirtisidir. Özellikle bir ayarınız var TERM=dumb. Düzgün çalışmayan diğer şeyler, lesstamamen işlevsel bir terminaliniz olmadığını söyleyen komuttur.

Bunun en yaygın nedeni TERM'in global Windows ortam değişkenlerinizde bir şeye ayarlanmasıdır. Benim için, Çilek Perl'i kurduğumda bu konuda bazı bilgiler bu sorun için msysgit hatasıyla ilgili geldi ve birkaç çözüm.

İlk çözüm, ~ / .bashrc dosyanızda şu bilgileri kullanarak düzeltmektir:

export TERM=msys

Bunu Git Bash isteminden şu şekilde yapabilirsiniz:

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

Çilek Perl'in TERM=dumbortam ayarlarıma ekleme nedenlerini umursamadığım için sonuçta yaptığım diğer çözüm, msysgit hata raporundaki bu yorumda belirtildiği TERM=dumbgibi gidip kaldırmaktır .

Denetim Masası / Sistem / Gelişmiş / Ortam Değişkenleri ... (veya Windows sürümünüze bağlı olarak benzer), Windows'ta yapışkan ortam değişkenlerinin ayarlandığı yerdir. Varsayılan olarak TERM ayarlanmamıştır. TERM orada ayarlanmışsa, siz (veya yüklediğiniz programlardan biri - örn. Strawberry Perl) bunu ayarlamıştır. Bu ayarı silin ve iyi olmalısınız.

Benzer şekilde Çilek Perl'i kullanıyorsanız ve CPAN istemcisini veya bunun gibi bir şeyi önemsiyorsanız , TERM=dumbyalnız bırakıpunset TERM yukarıdaki gibi açık bir terim ayarlamak için benzer bir etkiye sahip olacak ~ / .bashrc dosyanızda .

Elbette, git config --global core.editor $MYFAVORITEEDITORGit'in sizin için bir tane başlatması gerektiğinde en sevdiğiniz editörü kullandığından emin olmak için kullanabileceğiniz diğer tüm çözümler doğrudur .


çok teşekkür ederim! Çilek perl nedeniyle bu sorun yaşadım ve beni deli ediyordu! Bunu işaret
ettiğin için teşekkürler


4

PortableGit 1.6 iyi çalışıyordu, ancak PortableGit 1.7 Windows sürümüne yükselttikten sonra sorun yaşadım. Git komutlarından bazıları Notepad ++. Exe fine'i açar, ancak bazıları gitmez , özellikle Git rebase farklı davranır.

Sorun, bazı komutların Windows cmd işlemini çalıştırması ve bazılarının Unix cmd işlemini kullanmasıdır. Not Defteri ++ düzenleyicisine başlangıç ​​öznitelikleri vermek istiyorum, bu yüzden özelleştirilmiş bir komut dosyasına ihtiyacım var. Benim çözümüm bu.

  1. Uygun bir metin düzenleyiciyi çalıştırmak için bir komut dosyası oluşturun. Komut dosyası garip görünüyor, ancak hem Windows hem de Unix varyasyonunu yönetiyor.

    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. Genel core.editor değişkenini ayarlama

    Komut dosyası git / cmd klasörüne kaydedildi, bu yüzden zaten bir gitconsole yolunda. Tam yol düzgün çalışmayabileceğinden bu zorunludur.

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

Şimdi git command -a ve git rebase -i master komutlarını çalıştırabilirim. Git Windows aracında sorun yaşıyorsanız deneyin.


4

Git'i birden çok platformda kullanıyorum ve hepsinde aynı Git ayarlarını kullanmayı seviyorum. (Aslında, tüm yapılandırma dosyalarımı Git ile serbest bırakma kontrolüne sahibim ve her makineye Git veri havuzu klonu koydum.) Buradaki çözüm şudur:

Benim set editörü ile giteditor

git config --global core.editor giteditor

Sonra denilen sembolik bir bağlantı oluşturmak giteditor benim içindedir PATH . (Ben kişisel var bin dizini, ama her yerde YOLU eserleri.) Bu bağlantı noktaları seçim benim şimdiki editörü. Farklı makinelerde ve farklı platformlarda farklı editörler kullanıyorum, bu yüzden evrensel Git yapılandırmamı ( .gitconfig ) değiştirmek zorunda değilim , sadece giteditor bağlantısını işaret .

Sembolik bağlantılar tanıdığım her işletim sistemi tarafından yönetilir, ancak farklı komutlar kullanabilirler. Linux için ln -s kullanırsınız . Windows için cmd yerleşik mklink'ini kullanırsınız . Farklı sentaksları var (aramalısınız), ama hepsi aynı şekilde çalışıyor.


Aslında, bunu Windows7'de denedim ve msys git'den çalışmıyor. Diyor kierror: cannot spawn giteditor: No such file or directory
DanielSank

4

VonC'nin önerisine dayanarak , bu benim için çalıştı (beni deli ediyordu):

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

Atlama -wait, özellikle Gerrit ile çalışıyorsanız ve taahhüt mesajınızın altına manuel olarak kopyalanması gereken kimlikleri değiştiriyorsanız sorunlara neden olabilir .


4

Git'in Windows'ta Notepad ++ uygulamasını başlatmasını sağlamak için aşağıdakilerin her ikisini de yapmam gerekiyordu :

  • Aşağıdakileri .gitconfig dosyasına ekleyin:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Yönetici olarak çalışmak üzere Git Bash kabuğunu başlatmak için kısayolu değiştirin ve sonra Git Bash kabuğunu başlatmak için bunu kullanın. Bağlam menü girişi "Git Bash burada" Notepad ++ gerekli izinlerle başlatmıyor olduğunu tahmin ediyordum.

Yukarıdakilerin her ikisini de yaptıktan sonra işe yaradı.


3

Windows'ta Cygwin kullanıyorum , bu yüzden kullanıyorum:

export EDITOR="emacs -nw"

-nwİçindir no-windows, yani denemek ve kullanmak değil Emacs söyle X Pencere .

Emacs tuş bağlamaları benim için bir Windows kabuğundan çalışmıyor, bu yüzden bunu sadece bir Cygwin kabuğundan kullanırım ... ( rxvt önerilir.)


3

Bu benim Geany'yi Git için bir editör olarak kullanmak için benim kurulum :

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

aşağıdaki içeriğe sahip geany.bat:

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

Hem DOS konsolunda hem de msysgit'de çalışır.


2
VonC notepad ++ hakkında cevap verdi, cevabım Geany için mi?
CharlesB

2

Yolda boşluklar varsa Git editörü bulamıyor gibi görünüyor. Bu yüzden Patrick'in cevabında belirtilen toplu iş dosyasını boşluk olmayan bir yola koymanız gerekecek .


3
Bu biçim, boşluklu yollar için iyi çalışır: git config --global core.editor "\" c: \ Program Files \ textpad 5 \ textpad.exe \ "", bu nedenle toplu iş dosyası oluşturmamanız pratik olabilir
Carl

2

Git'i WordPad , Komodo Edit ve hemen hemen verdiğim diğer editörlerle işbirliği yapmakta zorlandım . Çoğu düzenleme için açıktır, ancak Git açıkça kaydetme / kapatma işleminin gerçekleşmesini beklemez.

Koltuk değneği olarak, sadece

git commit -m "Fixed the LoadAll method"

şeyleri hareket ettirmek için. Taahhüt iletilerimi muhtemelen olması gerekenden biraz daha kısa tutma eğilimindedir, ancak Git'in Windows sürümünde yapılması gereken bazı işler vardır.

GitGUI da o kadar da kötü değil. Biraz yönelim gerektirir, ancak bundan sonra oldukça iyi çalışır.


2

Emacs kullanmayı tercih ederim. Kurulumu biraz zor olabilir.

  1. Emacs'ı indirin ve istediğiniz gibi açın c:\emacs.
  2. Koş c:\emacs\bin\addpm.exe. Windows Vista veya üstünü kullanıyorsanız sağ tıklamanız ve "Yönetici Olarak Çalıştır" ı seçmeniz gerekir. Bu, yürütülebilir dosyaları yolunuza koyacaktır.
  3. Ekle (server-start)sizin de bir yerlerde .emacsdosyası. Dosyanızı nereye koyacağınız konusunda öneriler için Emacs Windows SSS sayfasına bakın .emacs.
  4. git config --global core.editor emacsclientw

Git artık dosyaları mevcut Emacs işleminde açacak. Bu mevcut işlemi manuel olarak çalıştırmanız gerekir c:\emacs\bin\runemacs.exe.


1

Tırnaklar ve kullanarak EDITOR değişkeni ayarlayarak ortam sürümünü çalışmayı başardı /:

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

1

Aynı sorunu yaşadım ve farklı bir çözüm buldum. Alıyordum

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

Ben var VISUAL=ecve ec.batyolumda bir satır içeren bir toplu iş dosyası var :

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

Bu, dosyaları komut satırından düzenlememe izin veriyor ec <filename>ve VISUALayarladığınız, çoğu unixy programın da onu alması anlamına geliyor. Ben bakınca bir - Git benim diğer komutlara rağmen farklı şekilde arama yolunun görünüyor git commityılında Monitör Süreci ben için yolda her klasörüne bakın gördü ecve için ec.exeiçin değil ec.bat. Başka bir ortam değişkeni ( GIT_EDITOR=ec.bat) ekledim ve her şey yolundaydı.


1

Güzel bir görsel seçenek olan Windows için GitHub kullanıyorum. Ama aynı zamanda komut satırını da tercih ediyorum, bu yüzden Git kabuğunda bir depo açtığımda çalışmasını sağlamak için aşağıdakileri ayarladım:

git config --global core.editor vim

harika çalışıyor.



1

Ben aa güzelce basit bir çözüm yayınlanmıştır bulundu burada - rağmen yazar tarafından verilen "subl" dosya üzerinden kopyalamak zorunda yolunda bir hata olabilir.

Windows 7 x64 çalıştırıyorum ve "subl" dosyasını /Git/cmd/ .

Yine de bir cazibe gibi çalışır.


1

Atom ve Windows 10

  1. Masaüstündeki Atom simgesini sağ tıklayıp özellikleri tıkladım.
  2. "Başlama yeri" konum yolunu kopyaladı
  3. Orada Windows Gezgini ile baktı ve "atom.exe" bulundu.
  4. Bunu Git Bash'e yazdım:

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

Not: Bütün değişti \için /. Ana dizinimde bir .bashrc oluşturdum ve ana dizinimi /ayarlamak için kullanılır ve işe yaradı, bu yüzden /gitmenin yolu olacağını varsaydım .


lütfen bu URL'yi kontrol edin , içerik kalitenizi yükseltmek yararlı olacaktır
Willie Cheng

@willie Teşekkür ederim, metni formatladım ve bazı etiketler ekledim. Umarım bunu biraz geliştirir.
Jonathan Ramos

0

İşte Cygwin ile bir çözüm:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Yol yoksa yol yok

  2. Yol boşsa, boş yolu iletin

  3. Yol boş değilse, Windows biçimine dönüştürün.

Sonra bu değişkenleri ayarladım:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR komut dosyasının Git ile çalışmasına izin verir

  2. GIT_EDITOR, komut dosyasının Hub komutlarıyla çalışmasına izin verir

Kaynak


0

Cygwin ve TextPad kullanarak bu benim için çalışıyor 6'yı kullanıyor (EDIT: kodda bariz bir değişiklik yaptığınız sürece TextPad 5 ile de çalışıyor) ve muhtemelen model diğer editörler için de kullanılabilir:

Dosya ~/.gitconfig:

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

Dosya ~/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"

Bu tek astar da işe yarıyor:

Dosya ~/script/textpad.sh(seçenek 2):

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

0

Bu benim için çalıştı:

  1. Editörün yürütülebilir dosyasını içeren dizini PATH değişkeninize ekleyin . (Örn. "C: \ Program Dosyaları \ Sublime Text 3 \" )
  2. Bilgisayarını yeniden başlat.
  3. Core.editor global Git değişkenini, '.exe' uzantısı olmadan yürütülebilir düzenleyicinin adına değiştirin (örn. Git config --global core.editor sublime_text)

Bu kadar!

NOT: Yüce Metin 3, bu örnek için kullandığım düzenleyicidir.


Bu şekilde yapılandırıldığında, Sublime Text 3 birden fazla örneği açar mı veya git'in düzenlemenin sona erdiğini bildirmek için gitmesi gerekebiliyor mu?
James World

1
Yeni bir pencere açacağını düşünüyorum. --Wait anahtarını ekleyebilirsiniz ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.