git commit -m vs. git commit -am

Parece fácil, pero simplemente no lo entiendo. Estoy en la raíz de mi aplicación.

Aquí está mi flujo de trabajo.

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

Esto usualmente funciona. Todos mis cambios son empujados.

Pero a veces tengo un file que cambio pero cuando presiono a Heroku los cambios no están ahí PARA ESE ÚNICO ARCHIVO … pero para la mayoría de los files los cambios están ahí …

Pero si lo hago

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

Todo (todos los cambios) son empujados a Heroku

De los documentos :

git commit: un escenario automático de todos los files modificados rastreados antes de la confirmación. Si crees que la etapa de adición de git es demasiado engorrosa, Git te permite omitir esa parte con la opción -a. Básicamente, esto le dice a Git que ejecute git add en cualquier file que sea "rastreado", es decir, cualquier file que haya estado en su última confirmación y haya sido modificado. Esto le permite hacer un flujo de trabajo de estilo más subversivo si lo desea, simplemente editando files y luego ejecutando git commit -a cuando desee hacer una instantánea de todo lo que se ha cambiado. Sin embargo, todavía necesita ejecutar git add para comenzar a rastrear nuevos files, al igual que Subversion.

Usar la opción -am permite agregar y crear un post para la confirmación en un command.