2012-05-25 43 views
6

Duplicar posible:
git add -A, git commit in one command?Git - Seguimiento automático de todos los archivos en un directorio

Si he entendido bien, cuando se añaden nuevos archivos a un directorio cuando se utiliza git, tengo que llame a más de un comando para asegurarse de que los archivos están confirmados:

git add <directory name> 
git commit -m 'commit comment' 

This no suena bien porque sé que I (y muchas otras personas) se olvidarán de llamar al git add <directory name> y luego terminarán con un proyecto al que le faltan todos los archivos nuevos que se crearon. Parece que debería ser capaz de enviar todo el directorio, incluidos todos los archivos nuevos, en un comando sin tener que especificar en un comando anterior para agregar todos los archivos nuevos a la confirmación. ¿Cómo hago esto?

+0

Esta respuesta a una pregunta similar también puede ser útil: http://stackoverflow.com/a/2759521/247763 – derekerdmann

+0

"Sé que me olvidaré de llamar a 'git add ...'", ya no. – GoZoner

Respuesta

3

obtener G2 en https://github.com/orefalo/g2

G2 le ayudará a aprender la línea de comandos de Git, proporcionando fácil de usar macros.

el comando es g freeze -m "commit msg".

Funciona con adiciones, eliminaciones y cambios. Estás congelando un estado ... que debería haber sido la forma de ser desde el primer día.

+1

O puede omitir G2 y simplemente alias: 'git config alias.freeze"! Git add -A && git commit "' – ellotheth

+0

de hecho, el alias es más como este freeze = "! F() {([-z $ @] && git add -A || git add -A "$ @" && git st;}; f ". G2 tiene mucho más para ofrecer ... –

+0

G2 tiene mucho más para ofrecer ... ver cómo se implementa la congelación https://github.com/orefalo/g2/blob/master/cmds/g2-freeze.sh –

6

git commit -a se comprometan todos los archivos conocidos por git:

-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. 

Si desea asegurarse de que está cometiendo todo lo que quiere ser, puede utilizar git-status antes de una git-commit, a ver los archivos que se preparan para la confirmación.

git utiliza un proceso de dos etapas para obtener cambios del working directory en el repository. Un enfoque catch-all como git commit -afuncionará, pero dará lugar a compromisos desordenados y no atómicos. Yo abogo por compromisos más pequeños y enfocados, en lugar de usar un enfoque global como el que está buscando.

Esto no suena bien porque sé que (y muchas otras personas) a olvidar llamar git add ...

git-status es su amigo :)

Nota: git-add does no agregar archivos al repositorio . git commit comete cosas de staging arearepository, no del working area. Esto puede parecer extraño al principio, pero da una flexibilidad mucho mayor. Ver another answer para más información.

Cuestiones relacionadas