Inserisci un messaggio di commit per spiegare perché questa unione è necessaria, soprattutto se unisce un upstream aggiornato in un ramo di argomento


515

Sto usando Git. Ho fatto un pull da un repository remoto e ho ricevuto un messaggio di errore:

Inserisci un messaggio di commit per spiegare perché questa unione è necessaria,
soprattutto se unisce un upstream aggiornato in un ramo di argomento.

Provo a digitare un messaggio e premo Enterma non succede nulla.

Come faccio a dire a Git / Terminal che ho finito di digitare il mio messaggio?

Sto usando Terminal su OS X.


3
Sembra che GIT sia configurato per aprire un modello preconfigurato e che tale modello venga aperto tramite l'editor predefinito (vi / vim).
Shunya,

Annulla questa unione e prova a usare git pull --rebase.
Ankush Jain,

3
Form me "Shift ZZ" risolve il problema
papacico

Risposte:


1190

Non è un messaggio di errore Git, è l'editor poiché git utilizza l'editor predefinito.

Per risolvere questo:

  1. premi "i" (i per inserire)
  2. scrivi il tuo messaggio di unione
  3. premi "esc" (fuga)
  4. scrivi ": wq" (scrivi ed esci)
  5. quindi premere Invio

7
Ok, ma questo presuppone che il suo editor sia vio vim.
Gabriele Petronella,

106
è complicato
Connor Leech,

92
Signore, odioVi
Sobiaholic,

153
Se aiuta qualcuno, il modo in cui lo ricordi è che "i" sta per "insert", "esc" è l'uscita di inserimento e ": wq" è solo "write" e "quit".
Josh Beam,

83
Questo potrebbe anche essere ↑↑ ↓↓ ← → ← → BA
Wesley Smith

39

In realtà non è un errore! Significa che dovresti inserire qualche messaggio per contrassegnare questa unione. Il mio sistema operativo è Ubuntu 14.04. Se si utilizza lo stesso sistema operativo, è sufficiente procedere come segue:

  1. Digita qualche messaggio

  2. CtrlCO

  3. Digitare il nome del file (ad esempio "Merge_feature01") e premere Enter

  4. CtrlX uscire

Ora se vai su .git e troverai il file "Merge_feature01", questo è il registro di unione in realtà.


6
Mi chiedo come qualcuno lo saprebbe? È così strano come funziona. Grazie per aver risposto.
Adrian Carr,

@ScottyBlades perché mai dovrebbe? la domanda è taggata osx e questa risposta riguarda il modo in cui Ubuntu configura una configurazione completamente diversa per Git (usando nanoo pico), che non è applicabile alla configurazione di OS X. Non è in alcun modo generalizzabile e inoltre non fornisce informazioni su come funziona, quindi il commento lasciato da @AdrianCarr. Adesso ci sono risposte molto migliori.
Oligofren,

27

tl; dr Imposta l'editor su qualcosa di più bello, come Sublime o Atom

Qui bello è usato nel significato di un editor che ti piace o trova più facile da usare .

Il problema di fondo è che Git usa di default un editor che non è intuitivo per la maggior parte delle persone: Vim. Ora, non fraintendermi, adoro Vim, e mentre potresti dedicare un po 'di tempo (come un mese) per imparare Vim e provare a capire perché alcune persone pensano che Vim sia il miglior editore esistente, c'è un modo più veloce di risolvere questo problema :-)

La correzione non è di memorizzare i comandi criptici , come nella risposta accettata, ma di configurare Git per usare un editor che ti piace e che capisci! È davvero semplice come configurare una di queste opzioni

  1. l'impostazione git config core.editor(per progetto o a livello globale)
  2. la variabile d'ambiente VISUALo EDITOR(funziona anche con altri programmi)

Tratterò la prima opzione per un paio di editor popolari, ma GitHub ha una guida eccellente su questo per molti editor .

Per usare Atom

Direttamente dai suoi documenti , inseriscilo in un terminale: git config --global core.editor "atom --wait"

Git normalmente aspetta che il comando dell'editor finisca, ma poiché Atom esegue immediatamente un processo in background, questo non funzionerà, a meno che tu non gli dia --wait opzione.

Per usare il testo sublime

Per gli stessi motivi del caso Atom, è necessario un flag speciale per segnalare al processo che non deve passare in background:

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


Vim non impiega un mese. ci vogliono due giorni e non dimenticherai mai finché manterrai un cheat sheet utile di volta in volta, all'inizio.
user264431,

22

Basta fare,

CTRL + X

CTRL + C

Ti chiederà di salvare il file, premi Y, quindi hai finito.


Questo è se l'editor predefinito è "pico" o "nano" I commenti sopra dovrebbero essere usati se l'editor predefinito è vim.
JacKeown,

7

Qui ti sta chiedendo un messaggio che si connette con la tua unione per riferimento futuro perché hai fatto questa unione.

press "i"
on top above on #lines write your message
press "esc" button
write ":wq" (it will write in bottom automatically)
press enter

6

Invece, potresti CtrlZeseguire git e riprovare a eseguire il commit, ma questa volta aggiungi "-m" con un messaggio tra virgolette dopo di esso, quindi eseguirà il commit senza che ti venga richiesta quella pagina.


3
lol questo risolverebbe sicuramente il problema del PO. git commit -m 'I did blah'
James M. Lay

Ho una versione 1.7.11.4 di git su un terminale linux, e nonostante il fatto che do git commit -m "messaggio" o git commit --message "messaggio", di tanto in tanto l'editor appare di tanto in tanto, richiedendo un messaggio. Qualcuno sa perché l'opzione "-m" viene ignorata?
pglpm,

4

Dal momento che il repository locale richiede pochi commit, git tenta di unire il telecomando al repository locale. Questo può essere gestito tramite unione, ma nel tuo caso, forse stai cercando rebase, cioè aggiungi il tuo commit in alto. Puoi farlo con

git rebase o git pull --rebase

Ecco un buon articolo che spiega la differenza tra git pull& git pull --rebase.

https://www.derekgourlay.com/blog/git-when-to-merge-vs-when-to-rebase/


0

Come aggiungere un messaggio nel terminale Android Studio con la tua unione. Questo è per gli utenti Mac.

  • Passaggio 1: premere "i"
  • Passaggio 2: inserisci il tuo messaggio dopo "#"
  • Passaggio tre: premere "esc"
  • Passo quattro: in fondo scrivi ": wq"
  • Passaggio 5: premere "Invio"

Hai finito con la tua unione, quindi puoi continuare a lavorare su pull al tuo locale dopo o creare un nuovo ramo.


0

Non è un messaggio di errore Git, è l'editor che git usa l'editor predefinito.

Per risolvere questo:

  1. premi "i"
  2. scrivi il tuo messaggio di unione
  3. premere "esc"
  4. scrivi ": wq"
  5. e premere invio

Spiegazione

Il modo in cui lo ricordi è che "i" sta per "insert", "esc" è l'uscita dall'inserimento e ": wq" è solo "write" e "quit".


0

questo non è un errore. devi aggiungere un massege per questa unione

per risolvere questo:

  1. premi "i" per inserire il tuo massege
  2. scrivi il tuo massege
  3. premi "esc"
  4. scrivi ": wq" (scrivi ed esci per salvare il massege ed uscire)
  5. premere Invio"

-1

Ho trovato l'errore perché ero nuovo di Git, devi verificare se hai inserito la sintassi corretta

ho fatto un errore e ho scritto git commit

e ho ottenuto lo stesso errore

uso git commit -m 'some comment'

e non vedrai la pagina con

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.