Come posso eseguire il commit dei file con git?


85

Nessuno dei tutorial aiuterà!
Fanno tutti quella cosa in cui presumono che io sappia cosa fare ..

Attualmente, la mia finestra di terminale inizia con ..

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       deleted:    httpdocs/newsite/manifest/cache/0a432970ba6491fe65dad60b012e5c95_louloumay2011en-1-4dea3186b7f7b.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0a61b5d7a9e97da78fe602e1ad41edb6_5-4dec7c3d57c80.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0afb6a7716a85d0de46cdd03bb30f75f_fifa_panorama_full_page-01_thu-4dea3d1a0e0f5.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b3bc9be76a5d3e1e36af4b8dcf98658_free2-4df0e2e08761f.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b6342913b8e599fac76da452af98ec5_si-feb-2009-1-4dea3d1abcb61.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0b9ddc587340f7744e03c4b2dafacf7f_lou-lou-winter-2009-cover-4dea3d1a9b1a0.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf64ff8fc22720b3da20d0730fa6a04_chatelaine-dec-2009-4dea3d18daa30.jpg
#       deleted:    httpdocs/newsite/manifest/cache/0bf664e03eb0a2255b69b02aed85add0_summumfeb2011-2-4dea3188766aa.jpg

ma non c'è modo di sapere come fare quello che dicono di fare qui ..
http://learn.github.com/p/normal.html

Tutto quello che dice è

Digitiamo semplicemente il nostro messaggio di commit e usciamo dall'editor.

Cosa significa?!
Solo perché scrivi la parola semplicemente non significa che sia semplice ..

Quando inizio a digitare, fa cose strane, dice "registrazione" o "inserimento" e ci sono circa 300 file, e vuole che io sostituisca ogni riga con un messaggio?!?

Aiuto !

Per questo userei la loro pratica applicazione per Mac, ma se sono più di 20 file o giù di lì, si blocca!
Cosa succede con quello??


10
Non ha niente a che fare con la mia domanda. Se ho detto "come sciare giù da una collina", allora dici a una persona come sciare, non dici "beh, perché sei su una montagna"
Kirk Strobeck

2
Un commit senza un argomento -m avvia un editor di testo in cui puoi inserire i tuoi commenti. (Probabilmente in questo caso vim predefinito). L'autore del tutorial presume che tu sappia già come usarlo.
Alex Howansky

@alex grazie per la spiegazione
Kirk Strobeck

Qualcuno più familiare con OSX di quanto io possa probabilmente dirti come impostare il tuo editor predefinito su qualcosa di diverso. Di solito è "export EDITOR = / path / to / any" nella configurazione di avvio della shell.
Alex Howansky

6
-1 per RT [F] M. L'editor predefinito sembrerebbe essere il problema, non la mancanza di lettura della documentazione di git.
Philip Oakley il

Risposte:


93

Quando esegui git commitsenza argomenti, aprirà il tuo editor predefinito per consentirti di digitare un messaggio di commit. Salvare il file e uscire dall'editor farà il commit.

Sembra che il tuo editor predefinito sia Vi o Vim. Il motivo per cui "cose ​​strane" accadono quando digiti è che Vi non si avvia in modalità di inserimento: devi prima premere isulla tastiera! Se non lo desideri, puoi cambiarlo in qualcosa di più semplice, ad esempio:

git config --global core.editor nano

Quindi caricherai l'editor Nano (supponendo che sia installato!) Quando effettui il commit, che è molto più intuitivo per gli utenti che non hanno utilizzato un editor modale come Vi.

Il testo che vedi sullo schermo serve solo per ricordarti cosa stai per commettere. Le righe sono precedute dal #che significa che sono commenti, cioè Git ignora quelle righe quando salvi il tuo messaggio di commit. Non è necessario digitare un messaggio per file, basta inserire del testo nella parte superiore del buffer dell'editor.

Per bypassare l'editor, puoi fornire un messaggio di commit come argomento, ad es

git commit -m "Added foo to the bar"

Quando dici "ignora", significa che rimarrà in scena?
Kirk Strobeck

3
No, quelle righe non influenzano ciò che verrà commesso. Quei file verranno comunque salvati anche se elimini le righe di commento. Sono solo un promemoria di quale fosse lo stato del tuo repository quando hai eseguito il git commitcomando.
Ben James,

Quindi se eseguo il commit, la modifica verrà registrata, anche se #su quella riga è presente un ?
Kirk Strobeck

2
È corretto. Ciò che è stato impegnato è ciò che è stato git addassegnato all'indice.
Ben James,

Un'altra opzione è invece di git commit, puoi eseguire git commit -a -m "Your message for the commit"Quindi nessun editor verrà eseguito.

27

Sembra che l'unico problema qui sia che l'editor predefinito che viene avviato è vio vim, con il quale non hai familiarità. (Come punta rapida, che per uscire dall'editor senza salvare le modifiche, ha colpito Escun paio di volte e quindi digitare :, q, !e Enter.)

Esistono diversi modi per impostare il tuo editor predefinito e non hai indicato quale sistema operativo stai utilizzando, quindi è difficile consigliarne uno in particolare. Suggerirei di utilizzare:

 git config --global core.editor "name-of-your-editor"

... che imposta una preferenza git globale per un particolare editor. In alternativa puoi impostare la $EDITORvariabile d'ambiente.


Il tuo vimcheat sheet è prezioso, soprattutto per coloro che provengono da quella comunità "un'icona vale più di mille righe di comando ;-)"
Philip Oakley

Ho appena trovato viemu.com/a-why-vi-vim.html particolarmente utile per spiegare perché vi / vim è ancora qui. Quindi migrare al cheat sheet della tastiera viemu.com/a_vi_vim_grautely_cheat_sheet_tutorial.html
Philip Oakley

25

nell'editor Vi standart in questa situazione dovresti

  1. premere Esc
  2. digita ": wq" (senza virgolette)
  3. premere Invio

16

Il comando per salvare tutti i file modificati:

git commit -a -m 'My commit comments'

-a = tutti i file modificati

-m = la seguente stringa è un commento.

Questo si impegnerà nel repository di unità / cartelle locali. Se desideri inviare le modifiche a un server git / server ospitato in remoto, dopo il comando precedente, digita:

git push

Il cheat sheet di GitHub è abbastanza utile.


13

Non conosco il tuo ambiente di sistema, ma sembra che tu abbia digitato:

git commit

E il tuo editor predefinito è stato avviato. Nel peggiore dei casi (per te) avrebbe potuto essere vim :)

Se non sai come uscire da vim, usa: q.

Se hai ulteriori problemi, potresti usare

git commit -m 'Type your commit message here'

C'è un modo per scegliere un editor diverso con cui si aprirà? Come nano?
Kirk Strobeck

1
Certo: questo dovrebbe cambiare l'editor predefinito in nano: git config --global core.editor nano
pkk

messaggio tra virgolette .. "Messaggio"
Prabs

2

Git usa "l'indice" per preparare i commit. Puoi aggiungere e rimuovere le modifiche dall'indice prima di eseguire il commit (nel tuo paste hai già cancellato ~ 10 file con git rm). Quando l'indice sembra che lo desideri, esegui git commit.

Di solito questo si accende vim. Per inserire il testo i, <esc>premere, torna alla modalità normale, premere ZZper salvare ed uscire ( ZQper uscire senza salvare). voilà, ecco il tuo impegno


2

Ciò accade quando non includi un messaggio quando provi a eseguire il commit utilizzando:

git commit

Lancia un ambiente di editor. Esci digitando :q!e premendo invio.

Ti riporterà al terminale senza impegnarti, quindi assicurati di riprovare, questa volta passa in un messaggio:

git commit -m 'Initial commit'

1
Questo in realtà mi ha aiutato più della risposta accettata spiegando il contesto, cosa sta succedendo e come rendere di nuovo normali "cose ​​strane".
timmackay

1

Sembra che tutte le modifiche facciano già parte dell'indice. Quindi per eseguire il commit basta usare il commitcomando

git commit -m "My Commit Message"

Guardando i tuoi messaggi anche se il mio istinto dice che probabilmente non vuoi che i cachefile vengano inclusi nel tuo depot. Soprattutto se si tratta di qualcosa che viene costruito al volo durante l'esecuzione del programma. In tal caso, è necessario aggiungere la seguente riga al file .gitignore

httpdocs/newsite/manifest/cache/*

era un sottoprogetto, l'intera directory è stata rimossa.
Kirk Strobeck

Per vedere che cosa tutti i comandi di Git ha digitare git --helpquesto vi darà tutti i comandi come commit, push, pull, cloneecc Per ottenere aiuto su un comando specifico e quali gli interruttori sono tipo disponibile git commit --help, git push --helpquesto dovrebbe funzionare su Linux e Mac linea di comando. Se vuoi una buona app a riga di comando, consiglierei la stessa che github git-scmcollega in questa pagina. help.github.com/mac-set-up-git
Ali

1

Ho affrontato lo stesso problema, l'ho risolto digitando, :q!quindi premi Enter E ha risolto il mio problema Dopo di che esegui il seguente comando git commit -a -m "your comment here"

Questo dovrebbe risolvere il tuo problema.


1
Quella risposta è già fornita qui ( stackoverflow.com/a/7080907/2827823 ) ... due volte in realtà, quindi non ne abbiamo bisogno di più.
Ason
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.