2013-11-09 40 views
30

Sembra facile ma proprio non capisco. Sono nella radice della mia domanda.git commit -m vs. git commit -am

Ecco il mio flusso di lavoro.

git add . 
git commit -m "added a new feature some files changed" 
git push heroku master 

Questo di solito funziona. Tutti i miei cambiamenti sono spinti.

Ma a volte ho un file che posso cambiare, ma quando spingo a Heroku i cambiamenti non sono lì per che un file ... ma per la maggior parte dei file cambia sono lì ...

Ma se io

git add . 
git commit -am "added a new feature some files changed" 
git push heroku master 

Tutto (tutte le modifiche) sono spinti a Heroku

+0

Puoi fornire esempi su quale file non viene catturato? È un file che hai eliminato? A volte devi fare 'git add. --update' per catturarli. – helion3

+0

@BotskoNet - Il file è un file CSS nella mia applicazione Rails. Per qualche motivo, quando modifico il file, le modifiche non vengono inviate a Heroku. Questo è successo prima e io non capisco perché. – slindsey3000

+0

Forse questo ti aiuterà. [Diverso tra quelli] [1] [1]: http://stackoverflow.com/a/15419846/3962576 – Reven

risposta

33

da the docs:

git commit -a imposta automaticamente tutti i file modificati e rintracciati prima del commit Se pensi che la fase di aggiunta git del flusso di lavoro sia troppo ingombrante, Git ti consente di saltare quella parte con l'opzione -a. Fondamentalmente dice a Git di eseguire git add su qualsiasi file "tracciato" - cioè qualsiasi file che era nell'ultimo commit ed è stato modificato. Ciò ti consente di eseguire un flusso di lavoro in stile Subversion più se vuoi, semplicemente modificando i file e poi eseguendo git commit -a quando vuoi fare uno snapshot di tutto ciò che è stato modificato. Devi ancora eseguire per aggiungere git add per iniziare a tracciare nuovi file, però, proprio come Subversion.

L'utilizzo dell'opzione -am consente di aggiungere e creare un messaggio per il commit in un comando.

+0

Allora perché 'git commit -am "x"' lavoro ... ma. ... 'git add .'' git commit -m "x" 'non funziona? – slindsey3000

+8

Poiché alcuni dei file non sono in fase di pianificazione. Ciò si verifica con file cancellati/aggiunti che non sono attualmente monitorati. Di solito, devi fare un 'git add -u' per mettere in scena file" non tracciati ". '-am' lo farà anche per te. –

+1

@ slindsey3000 si potrebbe cercare git add -A che è lo stesso di git add --all, che è diverso da git add. –