Come posso configurare un editor per lavorare con Git su Windows?


561

Sto provando Git su Windows . Sono arrivato al punto di provare "git commit" e ho riscontrato questo errore:

Il terminale è stupido ma non è stato definito VISUAL né EDITOR. Fornisci il messaggio usando l'opzione -m o -F.

Quindi ho capito che dovevo avere una variabile d'ambiente chiamata EDITOR. Nessun problema. L'ho impostato per puntare a Blocco note. Ha funzionato, quasi. Il messaggio di commit predefinito si apre in Blocco note. Ma Blocco note non supporta feed a riga nuda. Sono uscito e ho preso Notepad ++ , ma non riesco a capire come impostare Notepad ++ %EDITOR%in modo tale che funzioni con Git come previsto.

Non sono sposato con Notepad ++. A questo punto non mi importa quale editor uso. Voglio solo essere in grado di digitare i messaggi di commit in un editor anziché nella riga di comando (con -m).

Quelli di voi che usano Git su Windows: quale strumento usi per modificare i tuoi messaggi di commit e cosa hai dovuto fare per farlo funzionare?


7
TLDR: inserisci virgolette singole lungo il percorso dell'eseguibile dell'editor
yoyo

Probabilmente non è utile, ma FWIW, uso solo un normale blocco note. Non ho fatto nulla per farlo funzionare. Di default ha funzionato fuori dagli schemi ...
BrainSlugs83

11
Aggiornamento settembre 2015: git config core.editor notepadora basta un semplice . Vedi la mia risposta aggiornata di seguito .
VonC,

Solo una breve nota che JEdit non è un editor appropriato per Git. JEdit apre solo un'istanza anche per più file. Se era già aperto, git lo farà aprire un nuovo file, ma poi devi chiudere completamente JEdit prima che git continui. Non esiste alcuna opzione da riga di comando per consentire a JEdit di aprire un'istanza separata per la modifica del messaggio di commit.
GrantRobertson,

Nel caso in cui qualcuno ami Sublime Text 3, ecco le mie istruzioni su come l'ho configurato per Windows ... e Linux: le migliori impostazioni per Sublime Text 3 come editor git (istruzioni Windows e Linux) . @yoyo, TLDR per l'utilizzo di qualsiasi editor di testo: inserisci virgolette singole attorno al percorso dell'eseguibile dell'editor E usa le barre (/) NON le barre (\) nel nome del percorso dell'eseguibile di Windows.
Gabriel Staples,

Risposte:


562

Aggiornamento settembre 2015 (6 anni dopo)

L' ultima versione di git-per-Windows (2.5.3) ora include:

Configurando git config core.editor notepad, gli utenti possono ora utilizzare notepad.execome editor predefinito .
La configurazione git config format.commitMessageColumns 72verrà prelevata dal wrapper del blocco note e termina il messaggio di commit dopo che l'utente lo ha modificato.

Vedi commit 69b301b di Johannes Schindelin ( dscho) .

E Git 2.16 (Q1 2018) mostrerà un messaggio per dire all'utente che sta aspettando che l'utente finisca la modifica quando si genera un editor, nel caso in cui l'editor si apre a una finestra nascosta o in qualche luogo oscuro e l'utente si perde.

Vedi commit abfb04d (07 dic 2017) e commit a64f213 (29 nov 2017) di Lars Schneider ( larsxschneider) .
Aiutato da: Junio ​​C Hamano ( gitster) .
(Unita da Junio ​​C Hamano - gitster- in commit 0c69a13 , 19 dic 2017)

launch_editor(): indica che Git attende l'input dell'utente

Quando un elemento grafico GIT_EDITORviene generato da un comando Git che si apre e attende l'input dell'utente (ad esempio " git rebase -i"), la finestra dell'editor potrebbe essere oscurata da altre finestre.
L'utente potrebbe rimanere a fissare la finestra del terminale Git originale senza nemmeno rendersi conto che deve interagire con un'altra finestra prima che Git possa procedere. A questo utente Git sembra sospeso.

Stampa un messaggio che Git è in attesa dell'input dell'editor nel terminale originale e liberalo quando l'editor ritorna, se il terminale supporta la cancellazione dell'ultima riga


Risposta originale

L'ho appena provato con la versione 1.6.2.msysgit.0.186.gf7512 di Git e Notepad ++ 5.3.1

Preferisco non dover impostare una variabile EDITOR, quindi ho provato:

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

Questo dà sempre:

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

Se definisco un npp.bat tra cui:

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

e scrivo:

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

Funziona solo dalla sessione DOS, ma non dalla shell git .
(non con il meccanismo di configurazione core.editor, uno script con " start /WAIT..." non funzionerebbe, ma aprirà solo una nuova finestra DOS)


La risposta di Bennett menziona la possibilità di evitare l'aggiunta di uno script, ma di fare riferimento direttamente al programma stesso tra virgolette semplici . Nota la direzione delle barre! Utilizzare /NOT \per separare le cartelle nel nome del percorso!

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

O se ti trovi in ​​un sistema a 64 bit:

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

Ma preferisco usare uno script (vedi sotto): in questo modo posso giocare con percorsi diversi o opzioni diverse senza dover registrare di nuovo a git config.


La vera soluzione (con uno script) era rendersi conto che:
ciò a cui si fa riferimento nel file di configurazione è in realtà uno /bin/shscript shell ( ) , non uno script DOS.

Quindi ciò che funziona è:

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

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

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

o

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

Con questa impostazione, posso fare ' git config --global --edit' da DOS o Git Shell, oppure posso fare ' git rebase -i ...' da DOS o Git Shell.
I comandi bot attiveranno una nuova istanza di notepad ++ (da cui l' -multiInstopzione '), e attenderanno la chiusura dell'istanza prima di continuare.

Nota che uso solo '/', non \'. E ho installato msysgit usando l'opzione 2. (Aggiungi la git\bindirectory alla PATHvariabile d'ambiente, ma senza sovrascrivere alcuni strumenti di Windows integrati)

Il fatto che il wrapper notepad ++ sia chiamato .bat non è importante.
Sarebbe meglio chiamarlo "npp.sh" e inserirlo nella [git]\cmddirectory (o in qualsiasi directory a cui fa riferimento la variabile di ambiente PATH).


Guarda anche:


lightfire228 aggiunge nei commenti :

Per chiunque abbia un problema in cui N ++ apre solo un file vuoto e git non accetta il messaggio di commit, vedere " Interruzione del commit a causa di un messaggio vuoto ": cambia il tuo .bato il .shfile per dire:

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

Ciò dirà a notepad ++ di aprire il file temporaneo commit, anziché uno nuovo vuoto.


Nello script della shell sono necessarie virgolette doppie intorno a $ *, altrimenti non funzionerà correttamente per i percorsi con spazi all'interno. Grazie per la spiegazione approfondita - Sto installando git (e un sacco di altre cose) su Windows per i programmatori principianti, e la riga di comando è abbastanza difficile da grok senza far loro imparare i comandi vi.
Sarah Mei,

Un altro esempio concreto: stackoverflow.com/questions/1634161/...
VonC

1
Dopo la risposta di Bennett non è necessario creare uno script, puoi semplicemente usare un apostrofo "all'interno delle virgolette".
Tobias Kienzler,

@Tobias: vero, ho incluso la sua risposta nella mia, così come il motivo per cui preferisco ancora fare riferimento a uno script nelle mie git configimpostazioni.
VonC,

6
@NateGlenn Usa l' dir /Xequivalente abbreviato : " PROGRA~2" per " Program Files (x86)", che è una buona abitudine quando utilizzi strumenti compatibili multipiattaforma su Windows, che ti consente di schiacciare lo spazio bianco.
JJ Zabkar,

300

Sulla base della risposta di Darren , per usare Notepad ++ puoi semplicemente farlo (tutto su una riga):

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

Ovviamente, la C:/Program Files/Notepad++/notepad++.exeparte dovrebbe essere il percorso dell'eseguibile Notepad ++ sul tuo sistema. Ad esempio, potrebbe essere C:/Program Files (x86)/Notepad++/notepad++.exe.

Funziona come un incanto per me.


10
Anche a me! A proposito, quelle opzioni sono spiegate in C: / Programmi / Blocco note ++ / user.manual / documentazione / notepad-user-manual / command-line.html
Andrew Swan

23
Guarda per Notepad ++ che si trova in `C: \ Programmi (x86)`
mindless.panda

8
Per x64 Windows passare a: git config --global core.editor "'C: / Programmi (x86) / Blocco note ++ / notepad ++. Exe' -multiInst -notabbar -nosession -noPlugin"
Dariusz

4
Mi rendo conto di essere in ritardo a questa festa, ma per curiosità, qualcuno sa (o ricorda, dopo tutti questi anni) perché si dovrebbe specificare "-notabbar"? Capisco il ragionamento alla base degli altri parametri (beh, non so perché "-noPlugin", in realtà), ma non questo.
Wilson F

11
@WilsonF Il motivo è perché DEVI uscire da notepad ++ perché git smetta di attendere l'input e continuare. Non vuoi aprire altre schede in questa istanza di Notepad ++ perché la tua sessione git sembrerebbe bloccata! Queste impostazioni fanno esattamente la cosa giusta: se hai Notepad ++ già aperto, ottieni una nuova istanza, che non ti consente di aprire altri file e che devi chiudere una volta terminato affinché Git sappia che hai finito di modificare . Funziona allo stesso modo per i messaggi di commit.
ErikE

50

Ad ogni modo, ho appena giocato con questo e ho trovato quanto segue per funzionare bene per me:

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

Non credo che a CMD piacciano le virgolette singole, quindi è necessario utilizzare virgolette doppie "per specificare l'argomento stringa incorporato nello spazio".

Cygwin (che credo sia la piattaforma sottostante per Git's Bash) d'altra parte ama entrambi 'e "; puoi specificare un percorso simile a CMD, usando /invece di \, purché la stringa sia quotata, cioè in questa istanza, usando virgolette singole.

L' -moverride / indica l'uso di più editor e non è necessario un %*viraggio alla fine.


Grazie per la spiegazione della citazione singola / doppia, ora ha senso!
Patrick McDonald,

3
git config --global core.editor "'C:\Program Files\Sublime Text 3\sublime_text.exe' -m"funziona come un incanto per me.
Vlad Holubiev,

Ho usato `git config --global code.editor" 'C: \\ Programmi \\ Sublime Text 3 \\ sublime_text.exe' -n -w -m "`, tuttavia quando eseguo "git commit" si apre un editor di Blocco note. Qualche idea sul perché questo sarebbe il caso? Grazie in anticipo.
Ryan Chase,

@RyanChase Rimuovi la voce di configurazione locale da ./git/config ad es.editor = notepad
Ricky Boyce

1
Git Bash funziona con MingW64, non con Cygwin. Cygwin ha il suo binario Git.
Hans Deragon,

27

Modifica: dopo l'aggiornamento a Vim 7.3, sono giunto alla conclusione che il modo più semplice e pulito per farlo è:

  1. Aggiungi la cartella principale di Vim al tuo percorso (fai clic destro su Risorse del computerProprietàAvanzateVariabili d'ambiente )

  2. Esegui questo:

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

Se lo fai in questo modo, sono abbastanza sicuro che funzionerà anche con Cygwin.

Risposta originale:

Anche con un paio di risposte relative a Vim, ho avuto problemi a farlo funzionare con gVim in Windows (mentre non utilizzavo un file batch o% EDITOR% o Cygwin).

Quello che alla fine sono arrivato è bello e pulito, e trae alcune soluzioni qui:

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

Un problema che mi ha richiesto un po 'di tempo è che queste non sono le barre rovesciate in stile Windows. Sono normali barre in avanti.


1
Se vim è installato Program Files(x86), allora devi ovviamente cambiare il percorso.
Swapnil,

15

Notepad ++ funziona bene, anche se ho scelto di utilizzare Blocco note, -m o anche talvolta la "modifica" incorporata.

Il problema riscontrato durante l'utilizzo di Notepad ++ è correlato al modo in cui Git avvia il file eseguibile dell'editor. La mia soluzione a questo è di impostare la variabile di ambiente EDITORsu un file batch, anziché sull'eseguibile editor reale, che procede come segue:

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

/WAITdice alla sessione della riga di comando di fermarsi fino alla chiusura dell'applicazione, così sarai in grado di modificare il contenuto del tuo cuore mentre Git ti aspetta felicemente. % * passa tutti gli argomenti al file batch tramite Notepad ++.

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

Ho avuto problemi a farlo funzionare con PowerShell. Questo metodo ( stackoverflow.com/questions/10564/… ) ha funzionato bene però.
Peter Stephens,

11

WordPad !

Sono contento di usare Vim, ma dal momento che sto provando a presentare Git alla compagnia, ho voluto qualcosa che avremmo avuto tutti, e ho scoperto che WordPad sembra funzionare bene (cioè Git aspetta che tu abbia finito di modificare e chiudere la finestra).

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

Questo sta usando Git Bash su msysgit; Non ho provato dal prompt dei comandi di Windows (se questo fa alcuna differenza).


Mi è piaciuta la semplicità, ma non ha funzionato per me. Ecco cosa ho provato. Ricevo il seguente messaggio di errore: errore: si è verificato un problema con l'editor "C: \ Programmi \ Windows NT \ Accessori \ wordpad.exe".
Shaun Luttin,

3
Le virgolette non sono corrette. È necessario inserire le virgolette doppie fuori dalle virgolette singole . Cioè, usa "'C: \ Programmi \ Windows NT \ Accessori \ wordpad.exe'" e funzionerà.
Shaun Luttin,

È inoltre possibile trarre vantaggio dalle barre (/) anziché dalle barre rovesciate (\).
Chris Jones,

1
Inoltre, probabilmente è meglio usare "git config --global" invece di "git config" per questo. Probabilmente vuoi che le impostazioni si applichino a tutti i repository git sulla tua workstation, non solo a quello in cui ti trovi adesso.
Chris Jones,

@ChrisJones, In questo caso non ha senso perché "file di programma" ha uno spazio tra di essa.
Pacerier,

9

Uso anche Cygwin su Windows, ma con gVim (al contrario del Vim basato su terminale ).

Per farlo funzionare, ho fatto quanto segue:

  1. Creato un file batch di una riga (denominato git_editor.bat) che contiene quanto segue: "C:/Program Files/Vim/vim72/gvim.exe" --nofork "%*"
  2. Inserito git_editor.batnel mio PATH.
  3. Impostato GIT_EDITOR=git_editor.bat

Fatto ciò git commit, ecc. Invocherà correttamente l'eseguibile gVim.

NOTA 1: L' --noforkopzione per gVim assicura che si blocchi fino a quando il messaggio di commit è stato scritto.

NOTA 2: Le virgolette attorno al percorso di gVim sono necessarie se si hanno spazi nel percorso.

NOTA 3: Le virgolette intorno a "% *" sono necessarie nel caso in cui Git passi un percorso di file con spazi.


Per le persone che usano msysgit (non git di Cygwin) sono stato in grado di semplificarlo un po '. stackoverflow.com/questions/10564/…
Nick Knowlson,

A pensarci bene potrebbe funzionare anche con Cygwin, non ne sono del tutto sicuro
Nick Knowlson,

8

Grazie alla comunità Stack Overflow ... e una piccola ricerca sono stato in grado di far funzionare il mio editor preferito, EditPad Pro , come editor principale con msysgit 1.7.5.GIT e TortoiseGit v1.7.3.0 su Windows XP SP3. ..

Seguendo i consigli di cui sopra, ho aggiunto il percorso a uno script Bash per l'editor del codice ...

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

Tuttavia, dopo diversi tentativi falliti per le soluzioni di cui sopra ... Sono stato finalmente in grado di farlo funzionare. Secondo la documentazione di EditPad Pro, l'aggiunta del flag '/ newinstance' consentirebbe alla shell di attendere l'input dell'editor ...

La bandiera " / newinstance " era la chiave nel mio caso ...

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

Sì, quella doppia barra per il parametro newinstance dovrebbe essere nei documenti di Editpad. Grazie per averlo notato qui!
Gwideman,

EditPad Pro richiede opzioni della riga di comando come /newinstanceavere esattamente una barra. Questo è abbastanza normale per le applicazioni Windows. Se stai invocando EditPad da una shell UNIX, dovrai usare qualsiasi meccanismo offerto dalla tua shell per sfuggire alla barra in avanti in modo che non veda l'interruttore come un percorso assoluto e passi una singola barra in avanti alla riga di comando di EditPad.
Jan Goyvaerts,

2
Se si dispone di EditPad Pro 7 e si desidera richiamare EditPad Pro da un processo che desidera attendere il processo di EditPad, è necessario passare l' /waitinterruttore sulla riga di comando di EditPad. Puoi usare /waitcon o senza /newinstanceper controllare se una nuova finestra EditPad deve essere aperta o se una finestra esistente deve essere riutilizzata. Il processo avviato dallo script attenderà la chiusura del file indipendentemente dal fatto che una finestra sia stata creata o riutilizzata. EditPad Pro 6 e precedenti non supportano /wait.
Jan Goyvaerts,

@JanGoyvaerts ~ Grazie per la /waitpunta della bandiera, signore ... :)
Eddie B,

Non sono riuscito a far funzionare EditPad Lite per me usando le istruzioni sopra. Forse perché stavo cercando di invocare EditPad (tramite Git) usando il terminale di Windows anziché Git Bash o qualche altra shell UNIX. Quello che ha funzionato per me è stato modificare direttamente la [core]sezione di .gitconfig per includere la linea editor = "'C:/Program Files/Just Great Software/EditPad Lite 7/EditPadLite7.exe' //wait //newinstance".
user697473

8

Per Atom puoi farlo

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

e simili per Visual Studio Code

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

che aprirà una finestra Atom o Visual Studio Code per il tuo commit,

o per Sublime Text :

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

Molto più semplice ed efficace. Grazie.
rom5jp,

6

Modifica il file .gitconfig nella cartella c: \ Users \ YourUser e aggiungi:

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

6

Questo è l'unico sintomo di maggiori problemi. In particolare che hai qualcosa di impostazione TERM=dumb. Altre cose che non funzionano correttamente sono il lesscomando che dice che non hai un terminale completamente funzionale.

Sembra che questo sia più comunemente causato dall'avere TERM impostato su qualcosa nelle variabili di ambiente globali di Windows. Per me, il problema è emerso quando ho installato Strawberry Perl alcune informazioni a riguardo si trovano sul bug msysgit per questo problema , nonché su diverse soluzioni.

La prima soluzione è risolverlo nel tuo ~ / .bashrc aggiungendo:

export TERM=msys

Puoi farlo dal prompt di Git Bash in questo modo:

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

L'altra soluzione, che alla fine è ciò che ho fatto perché non mi importa delle ragioni di Strawberry Perl per l'aggiunta TERM=dumballe mie impostazioni di ambiente, è quella di andare a rimuovere il TERM=dumbcome indicato in questo commento sul rapporto bug di msysgit .

Pannello di controllo / Sistema / Avanzate / Variabili d'ambiente ... (o simili, a seconda della versione di Windows) è dove le variabili d'ambiente permanenti sono impostate su Windows. Per impostazione predefinita, TERM non è impostato. Se TERM è impostato lì, allora (o uno dei programmi che hai installato - ad esempio Strawberry Perl) lo hai impostato. Elimina quell'impostazione e dovresti andare bene.

Allo stesso modo se usi Strawberry Perl e ti preoccupi del client CPAN o qualcosa del genere, puoi lasciare TERM=dumbda solo e utilizzare unset TERMnel tuo file ~ / .bashrc che avrà un effetto simile all'impostazione di un termine esplicito come sopra.

Naturalmente, tutte le altre soluzioni sono corrette in quanto è possibile utilizzare git config --global core.editor $MYFAVORITEEDITORper assicurarsi che Git utilizzi il proprio editor preferito quando è necessario avviarne uno.


grazie mille! ho avuto questo problema a causa di Strawberry Perl e mi stava facendo impazzire! grazie per
averlo


4

PortableGit 1.6 funzionava bene, ma dopo l'aggiornamento alla versione di PortableGit 1.7 per Windows, ho avuto problemi. Alcuni dei comandi Git aprono Notepad ++. Exe bene, ma alcuni non lo fanno, specialmente Git rebase si comporta diversamente.

Il problema è che alcuni comandi eseguono il processo cmd di Windows e alcuni usano il processo cmd Unix. Voglio dare attributi di avvio all'editor Notepad ++, quindi ho bisogno di uno script personalizzato. La mia soluzione è questa

  1. Creare uno script per eseguire un editor di testo appropriato. Lo script sembra strano, ma gestisce sia la variazione di Windows che 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. Imposta la variabile globale core.editor

    Lo script è stato salvato nella cartella git / cmd, quindi è già in un percorso gitconsole. Questo è obbligatorio in quanto un percorso completo potrebbe non funzionare correttamente.

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

Ora posso eseguire i comandi master git commit -a e git rebase -i . Provalo se riscontri problemi con lo strumento Git Windows.


4

Uso Git su più piattaforme e mi piace usare le stesse impostazioni Git su tutte. (In effetti, ho tutti i miei file di configurazione sotto controllo di rilascio con Git e metto un clone di repository Git su ogni macchina.) La soluzione che ho trovato è questa:

Ho impostato il mio editor su giteditor

git config --global core.editor giteditor

Quindi creo un collegamento simbolico chiamato giteditor che si trova nel mio PERCORSO . (Ho una directory bin personale , ma in qualsiasi parte del PATH funziona.) Quel link punta al mio attuale editor preferito. Su macchine diverse e piattaforme diverse, utilizzo editor diversi, quindi ciò significa che non devo cambiare la mia configurazione universale di Git ( .gitconfig ), ma solo il collegamento a cui giteditor punta.

I collegamenti simbolici sono gestiti da tutti i sistemi operativi che conosco, sebbene possano usare comandi diversi. Per Linux, usi ln -s . Per Windows, si utilizza mklink incorporato cmd . Hanno sintassi diverse (che dovresti cercare), ma tutto funziona allo stesso modo, davvero.


In realtà, l'ho provato su Windows 7 e non funziona con msys git. Diceerror: cannot spawn giteditor: No such file or directory
DanielSank

4

Sulla base del suggerimento di VonC , questo ha funzionato per me (mi stava facendo impazzire):

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

L'omissione -waitpuò causare problemi, soprattutto se si sta lavorando con Gerrit e si cambiano gli ID che devono essere copiati manualmente nella parte inferiore del messaggio di commit.


4

Ho dovuto fare entrambe le seguenti cose per ottenere Git per avviare Notepad ++ in Windows:

  • Aggiungi quanto segue a .gitconfig:

    editor = 'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin
    
  • Modifica il collegamento per avviare la shell Git Bash da eseguire come amministratore, quindi utilizzalo per avviare la shell Git Bash. Pensavo che la voce del menu contestuale "Git Bash qui" non avviasse Notepad ++ con le autorizzazioni necessarie.

Dopo aver fatto entrambe le cose, ha funzionato.


3

Uso Cygwin su Windows, quindi utilizzo:

export EDITOR="emacs -nw"

Il -nwè per no-windows, cioè dire Emacs di non cercare di utilizzare X Window .

I keybind di Emacs non funzionano per me da una shell di Windows, quindi lo userei solo da una shell Cygwin ... ( si consiglia rxvt .)


3

Questa è la mia configurazione per usare Geany come editor per Git:

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

con il seguente contenuto in geany.bat:

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

Funziona sia in una console DOS che in msysgit.


2
VonC ha risposto di notepad ++, la mia risposta è per Geany?
Charles B

2

Sembra che Git non trovi l'editor se ci sono spazi nel percorso. Quindi dovrai inserire il file batch menzionato nella risposta di Patrick in un percorso non di spazi bianchi.


3
Questo formato funziona bene per i percorsi con spazi: git config --global core.editor "\" c: \ Programmi \ textpad 5 \ textpad.exe \ "", quindi potrebbe essere pratico per te evitare di creare un file batch
Carl

2

Ho avuto difficoltà a convincere Git a collaborare con WordPad , Komodo Edit e praticamente tutti gli altri editor che gli ho dato. La maggior parte è aperta per la modifica, ma Git chiaramente non aspetta che il salvataggio / chiusura avvenga.

Come stampella, ho appena fatto cioè

git commit -m "Fixed the LoadAll method"

per mantenere le cose in movimento. Tende a mantenere i miei messaggi di commit un po 'più brevi di quanto probabilmente dovrebbero essere, ma chiaramente c'è del lavoro da fare sulla versione Windows di Git.

Anche GitGUI non è poi così male. Ci vuole un po 'di orientamento, ma dopo ciò funziona abbastanza bene.


2

Preferisco usare Emacs. Prepararlo può essere un po 'complicato.

  1. Scarica Emacs e scompattalo da qualche parte come c:\emacs.
  2. Corri c:\emacs\bin\addpm.exe. È necessario fare clic con il tasto destro e "Esegui come amministratore" se si utilizza Windows Vista o versioni successive. Questo metterà gli eseguibili nel tuo percorso.
  3. Aggiungi (server-start)da qualche parte nel tuo .emacsfile. Consulta le domande frequenti su Emacs Windows per consigli su dove inserire il tuo .emacsfile.
  4. git config --global core.editor emacsclientw

Git ora aprirà i file all'interno di un processo Emacs esistente. Dovrai eseguire il processo esistente manualmente da c:\emacs\bin\runemacs.exe.


1

Sono riuscito a far funzionare la versione dell'ambiente impostando la variabile EDITOR usando le virgolette e /:

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

1

Ho appena avuto lo stesso problema e ho trovato una soluzione diversa. Stavo arrivando

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

Ho VISUAL=ec, e un file batch chiamato ec.batsul mio percorso che contiene una riga:

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

Questo mi permette di modificare i file dalla riga di comando ec <filename>, e dopo aver VISUALimpostato significa che anche la maggior parte dei programmi unixy lo prende. Git sembra cercare il percorso in modo diverso ai miei altri comandi anche se - quando ho guardato un git commitin Process Monitor ho visto apparire in ogni cartella del percorso ece per ec.exe, ma non per ec.bat. Ho aggiunto un'altra variabile d'ambiente ( GIT_EDITOR=ec.bat) e tutto andava bene.


1

Sto usando GitHub per Windows che è una bella opzione visiva. Ma preferisco anche la riga di comando, quindi per farlo funzionare quando apro un repository in una shell Git ho appena impostato quanto segue:

git config --global core.editor vim

che funziona benissimo.



1

Ho trovato una soluzione meravigliosamente semplice pubblicata qui - anche se potrebbe esserci un errore nel percorso in cui devi copiare il file "subl" fornito dall'autore.

Sto eseguendo Windows 7 x64 e ho dovuto inserire il file "subl" nel mio /Git/cmd/ cartella per farlo funzionare.

Funziona come un fascino, però.


1

Atom e Windows 10

  1. Ho fatto clic con il tasto destro sull'icona Atom sul desktop e ho fatto clic su Proprietà.
  2. Copiato il percorso della posizione "Avvia in"
  3. Guardato lì con Windows Explorer e trovato "atom.exe".
  4. Ho digitato questo in Git Bash:

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

Nota: ho cambiato tutto \per /. Ho creato un .bashrc nella mia home directory e usato /per impostare la mia home directory e ha funzionato, quindi ho pensato /che fosse la strada da percorrere.


controlla questo URL sarà utile per aumentare la qualità dei tuoi contenuti
Willie Cheng

@willie Grazie, ho formattato il testo e aggiunto alcuni tag. Spero che migliorerà un po '.
Jonathan Ramos,

0

Ecco una soluzione con Cygwin:

#!/bin/dash -e
if [ "$1" ]
then k=$(cygpath -w "$1")
elif [ "$#" != 0 ]
then k=
fi
Notepad2 ${k+"$k"}
  1. Se nessun percorso, non passare alcun percorso

  2. Se il percorso è vuoto, passare un percorso vuoto

  3. Se il percorso non è vuoto, converti in formato Windows.

Quindi ho impostato queste variabili:

export EDITOR=notepad2.sh
export GIT_EDITOR='dash /usr/local/bin/notepad2.sh'
  1. EDITOR consente allo script di funzionare con Git

  2. GIT_EDITOR consente allo script di funzionare con i comandi Hub

fonte


0

Questo funziona per me usando Cygwin e TextPad 6 (EDIT: funziona anche con TextPad 5 fintanto che apporti l'evidente modifica allo script), e presumibilmente il modello potrebbe essere usato anche per altri editor:

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"

Questo one-liner funziona anche:

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

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

0

Questo ha funzionato per me:

  1. Aggiungi la directory che contiene l'eseguibile dell'editor alla tua variabile PATH . (Ad esempio "C: \ Programmi \ Sublime Text 3 \" )
  2. Riavvia il tuo computer.
  3. Cambia la variabile Git globale core.editor con il nome dell'eseguibile dell'editor senza l'estensione '.exe' (es. Git config --global core.editor sublime_text)

Questo è tutto!

NOTA: Sublime Text 3 è l'editor che ho usato per questo esempio.


Se configurato in questo modo, Sublime Text 3 apre più istanze o gestisce il fatto che git ne ha bisogno per chiudere per segnalare la fine della modifica?
James World,

1
Penso che aprirà una nuova finestra. Puoi aggiungere l'opzione --wait ( sublimetext.com/forum/viewtopic.php?f=3&t=3257 )
nikoskip
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.