2012-05-25 19 views
6

Eventuali duplicati:
git add -A, git commit in one command?Git - tracciare automaticamente tutti i file in una directory

Se ho capito bene, quando vengono aggiunti nuovi file in una directory quando si usa git, devo chiamare più di un comando per assicurarsi che i file siano impegnati:

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

Questo non suona bene perché so che io (e molte altre persone) dimenticherò di chiamare git add <directory name> e poi finirò con un progetto in cui mancano tutti i nuovi file che sono stati creati. Sembra che dovrei essere in grado di impegnare l'intera directory, compresi tutti i nuovi file, in un unico comando senza dover specificare in un comando precedente di aggiungere tutti i nuovi file al commit. Come faccio a fare questo?

+0

Questa risposta a una domanda simile potrebbe anche essere utile: http://stackoverflow.com/a/2759521/247763 – derekerdmann

+0

"So che dimenticherò di chiamare 'git add ...'" - non più. – GoZoner

risposta

3

ottenere G2 a https://github.com/orefalo/g2

G2 vi aiuterà a imparare la linea di comando git, fornendo facile da usare le macro.

il comando è g freeze -m "commit msg".

Funziona con aggiunte, cancellazioni e modifiche. stai congelando uno stato .. che avrebbe dovuto essere il modo di essere fin dal primo giorno.

+1

Oppure puoi saltare G2 e solo alias: 'git config alias.freeze!! Git add -A && git commit" ' – ellotheth

+0

infatti, l'alias è più simile a questo freeze ="! F() {([-z $ @] && git add -A || git add -A "$ @") && git st;}; f ". G2 ha molto altro da offrire ... –

+0

G2 ha molto altro da offrire .. guarda come viene implementato freeze https://github.com/orefalo/g2/blob/master/cmds/g2-freeze.sh –

6

git commit -a commetterà tutti i file noti per 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. 

Se si vuole fare in modo che stai commettendo tutto ciò che si vuole essere, è possibile utilizzare git-status prima di un git-commit, a guarda i file che sono messi in scena per il commit.

git utilizza un processo a due fasi per ottenere le modifiche da working directory a repository. Un approccio generale come git commit -asarà funzionante, ma porterà a commessi disordinati, non atomici. Vorrei difendere i commit più piccoli e focalizzati, piuttosto che usare un approccio catch-all come quello che stai cercando.

Questo non suona bene perché so (e molte altre persone) dimenticherò chiamare git add ...

git-status è tuo amico :)

Nota: git-add fa non aggiungi file al repository . git commit impegna le cose dallo staging area allo repository, non dallo working area. All'inizio questo potrebbe sembrare strano, ma offre una flessibilità molto maggiore. Vedere another answer per ulteriori informazioni.

Problemi correlati