¿Es malo comprometer todos los files siempre en git?

es decir, git commit -am?

No estoy al tanto de las repercusiones que esto podría tener más adelante en una fusión, por ejemplo.

git commit -a no confirma todos los files. En su lugar, solo compromete todos los files que ya están bajo control de versión y tienen cambios sin instancia (además de los files ya montados).

  -a, --all Tell the command to automatically stage files that have been modified and deleted, but new files you have not told Git about are not affected. 

Esto es diferente de git add -A , que agrega todos los files y a los que se refieren otras respuestas. Eso agregará todo sin seguimiento y no ignorado (ver gitignore ).

El uso de git commit -a no es dañino per se. Hay dos problemas que pueden popup:

  1. Sus confirmaciones pueden volverse grandes, lo que dificulta la búsqueda de la causa de una regresión (ver git bisect ). Para evitar esto, debes mirar git commit -p .

  2. Puede perder files que no se han rastreado (esto solo puede evitarse usando git status , git add y su cerebro).

En cuanto a las fusiones, git realiza fusiones basadas en los cambios individuales en un file. Por lo tanto, no importa cuántos files haya en un commit. Pero hacer commits más pequeños usualmente lleva a less cambios por file, facilitando las fusiones.

No quiere que los files object, los files ejecutables (resultado de una construcción, es decir, los binarys comstackdos) y los files de respaldo (por ejemplo, foo.html~ ) se comprometan git .

Por lo tanto, debe tener un file .gitignore y debe configurarlo lo antes posible.

Ver también esto

Una vez que tenga un .gitignore suficientemente .gitignore usando git commit -a -m .... es sensato. A menudo hago eso.

Depende de lo que tenga en su directory de trabajo.

Cuando solo tienes código fuente y otros files bajo control de versión, no habrá problema. Pero en muchos proyectos del mundo real, acumulas varios types de artefactos en el directory de trabajo que no deseas tener bajo control de versiones (especialmente cuando son files binarys). La configuration de un file .gitignore que enumera los files que no desea bajo control de versiones puede ayudar.

Además, a veces trabajas en múltiples funciones simultáneamente, pero eras un usuario de Git descuidado y olvidaste crear una twig para cada function. En ese caso, es probable que desee confirmar ambas funciones por separado. Eso significaría que crea dos confirmaciones a las que agrega los files necesarios manualmente.