Risposte:
Hai lo scopo di mettere il messaggio di commit in questo file di testo, quindi salvare ed uscire.
Puoi cambiare l'editor di testo predefinito che git usa con questo comando:
git config --global core.editor "nano"
Devi cambiare nano in qualsiasi comando normalmente aprirebbe il tuo editor di testo.
--global
modifica per l'utente corrente e la --system
modifica per tutti su quel computer.
Come accennato da Ben Collins , senza l' -m "..."
argomento per digitare il commit inline (che generalmente è una cattiva idea in quanto ti incoraggia a essere breve), questo "grande file di testo" che viene aperto è una finestra in cui digitare il messaggio di commit .
Di solito si consiglia di scrivere un riepilogo nella prima riga, saltare una riga e quindi scrivere note più dettagliate sotto; questo aiuta i programmi che fanno cose come inviare per posta elettronica i messaggi di commit con un oggetto appropriato e l'elenco completo delle modifiche apportate nel corpo.
Invece di cambiare la EDITOR
variabile della shell, puoi anche cambiare l'editor utilizzato aggiungendo le righe aggiuntive nel tuo ~/.gitconfig
file:
[core]
editor = emacs
excludesfile = /Users/will/.gitignore
Quella seconda riga in realtà non ha nulla a che fare con il tuo problema, ma la trovo davvero utile in modo da poter popolare il mio ~/.gitignore
file con tutti quei tipi di file che so che non vorrò mai, mai, impegnare in un repository.
Il file di testo che viene aperto è un riepilogo dell'operazione di commit corrente. Il commit git ti inserisce in questo file in modo che tu possa aggiungere un messaggio di commit all'inizio del file. Dopo aver aggiunto il messaggio, salva ed esci da questo file.
C'è anche un'opzione "-m msg" su questo comando che ti consente di aggiungere il messaggio di commit sulla riga di comando.
Se sei su Mac OS X e utilizzi BBEdit, puoi impostarlo come editor preferito per i messaggi di commit:
git config --global core.editor "bbedit -w"
Una volta terminata la modifica, salva e chiudi il file e git lo utilizzerà per i commenti.
Supponendo che il tuo editor sia predefinito su vi / vim, puoi uscire dall'editor dei messaggi di commit digitando:
:x
che salverà e uscirà dal file del messaggio di commit. Quindi tornerai alla normale sezione del comando git.
Altri comandi vi:
http://www.lagmonster.org/docs/vi.html
esc
premere per entrare in modalità comando prima di digitare :x
per salvare e uscire.
Come tutti hanno detto, questo è solo il punto in cui aggiungi il tuo commento di commit - ma per alcuni potrebbe essere ancora fonte di confusione specialmente se non hai configurato le impostazioni dell'editor e non sei a conoscenza di cosa sia VI : allora potresti essere uno shock , perché penserai di essere ancora nel GIT-Bash
In quel caso sei in effetti in un editor di testo con alcuni modi interessanti di gestire le cose e questo insieme di comandi può aiutarti in modo che tu possa superare il tuo primo commit e quindi configurare un editor con cui hai familiarità o usarlo come un'opportunità per imparare a usarlo.
L' -m
opzione per il commit ti consente di inserire un messaggio di commit sulla riga di comando:
git commit -m "my first commit"
Quando crei un nuovo commit, git avvia un editor di testo e vi scrive alcune cose.
Utilizzando questo editor di testo, l'intenzione è di scrivere il messaggio di commit che verrà associato al commit creato in modo feshly.
Dopo aver terminato, salva e esci dall'editor di testo. Git userà ciò che hai scritto come messaggio di commit.
Il messaggio di commit ha una struttura particolare, descritta come segue:
La prima riga del messaggio di commit viene utilizzata come intestazione (o titolo) del messaggio. La lunghezza preferita dell'intestazione del commit è inferiore a 40 caratteri, poiché questo è il numero di caratteri che github visualizza nella scheda Commits di un dato repository prima di troncarlo, cosa che alcune persone trovano irritante.
Quando si compone l'intestazione, l'uso di un verbo al presente in maiuscolo per la prima parola è pratica comune, sebbene non sia affatto richiesta.
Una nuova riga delinea l'intestazione e il corpo del messaggio.
Il corpo può consistere in quello che vuoi. Una panoramica delle modifiche introdotte dal tuo commit è ragionevole. Alcune applicazioni di terze parti utilizzano le informazioni incluso il corpo dei messaggi di commit per attivare vari tipi di hook (penso a Gerrit e Pivotal Tracker, per citarne due).
Ecco un breve e dolce esempio. Un inizio #
denota un commento.
Gitignore index.pyc
Ignore gunicorn generated binary file
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch dev
# Your branch is ahead of 'origin/dev' by 10 commits.
# (use "git push" to publish your local commits)
#
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: .gitignore
#
Qui un certo signor Torvalds opina su ciò che rende un buon impegno.
E qui Tpope fa lo stesso.
Come affermato in molte altre risposte, la modifica dell'editor predefinito è una riga singola sulla riga di comando.
Per la mia preferenza:
git config --global core.editor "vim"
Prova Esc e poi ZZ, dopo aver digitato il messaggio. Come altri hanno detto, quando esegui quel comando commit, in realtà esegue un editor di testo per inserire il messaggio. Nel mio caso (OS X) era VI, che ho scoperto dopo aver scavato un po '. In tal caso, premi Esc per entrare in modalità "comando" (al contrario della modalità INSERT) e inserisci ZZ. Sono sicuro che ci sono altri modi per portare a termine il compito, ma per me è stato così. Non avendo mai usato VI o emacs non mi è stato subito evidente e non è stato menzionato in nessuna delle guide per principianti che stavo usando. Si spera che questo aiuti.
Il git commit
comando aprirà l'editor specificato nella EDITOR
variabile d'ambiente in modo da poter inserire un commento di commit. Su un sistema Linux o BSD, dovrebbe essere vi per impostazione predefinita, sebbene qualsiasi editor dovrebbe funzionare.
Basta inserire i tuoi commenti e salvare il file.
Ero confuso perché continuavo a provare a inserire un nome file dopo: w in VIM. Ciò non attiva il commit. Invece ho continuato a ricevere un messaggio "Interruzione del commit a causa di un messaggio di commit vuoto". Non inserire un nome file dopo: w. : w salva il file in .git / COMMIT_EDITMSG per impostazione predefinita. Quindi: q per uscire per completare il commit. Puoi vedere i risultati con git log.
Ora che ho cambiato il mio editor in emacs, tutto funziona bene.
Ma prima di impostarlo, "git commit -a" ha aperto gedit, ma è terminato immediatamente con un "commit interrotto a causa di un messaggio di commit vuoto". Il salvataggio del file da gedit non ha avuto alcun effetto. L'impostazione esplicita dell'editor con "git config --global core.editor" gedit "" ha avuto lo stesso risultato.
Non c'è niente di sbagliato in emacs, ma per curiosità perché non funziona con gedit e c'è un modo per farlo funzionare?
Grazie.
git config --global core.editor "gedit -s"
Per quelli di voi che utilizzano OS XI ho trovato questo comando che funziona bene:
git config --global core.editor "open -t -W"
che costringerà git ad aprire l'editor di testo predefinito (textedit nel mio caso) e quindi ad attendere che esci dall'applicazione. Tieni presente che devi "Salva" e poi "Esci" textedit prima che il commit venga completato. Ci sono alcuni altri comandi con cui puoi giocare come descritto in dettaglio in questa pagina:
Libreria per sviluppatori Apple: comando di apertura
Puoi anche provare git config --global core.editor "open -e -W"
se vuoi che git apra sempre textedit indipendentemente da quale sia l'editor predefinito.
Sì, assicurati di avere un set di editor ragionevole. Non sono sicuro di quale sarà l'editor predefinito ma se, come me, è nano (dirà da qualche parte vicino all'inizio dopo aver digitato commit) devi solo digitare un commento e quindi premere Ctrl-x per finire. Quindi premi y, seguito da invio per confermare il commit.
Inoltre, se vuoi vedere un semplice elenco dei file che invierai piuttosto che un enorme elenco di differenze, prova in anticipo
git diff --name-only
Quando esegui il controllo di revisione, dovresti sempre spiegare quali sono le modifiche apportate. Di solito la prima volta che ricevi un commento come "Initial Commit".
Tuttavia, a lungo termine, vuoi fare un buon commento per ogni commit. Avrai bisogno di qualcosa della forma:
Aggiunta funzionalità sperimentale x.
X aumenterà le prestazioni della funzione Y nella condizione Z. Se hai bisogno di X, attivala con gli interruttori -x o --feature-eks. Questo risponde alla richiesta di funzionalità # 1138.
--global
per modificare l'impostazione predefinita?