2010-07-16 13 views
9

Una domanda correlata How do you stash an untracked file? ha risposto con "traccia il file". Questo non funziona per i miei bisogni particolari, comunque.git: Posso nascondere un file non tracciato senza aggiungerlo all'indice?

Sto cercando di nascondere tutto ciò che non è nell'indice con git stash save --keep-index in modo da poter convalidare l'indice nel mio hook pre-commit. L'idea è dall'esempio "Testing partial commits" della pagina man di git-stash. Voglio assicurarmi che ciò che sto effettivamente commettendo superi i test e non solo quello che è nella directory di lavoro. Ecco quello che ho finora:

echo "Running tests on the staging area." 
git stash save --keep-index 
# configure, build, run tests, clean 
git stash pop; true 

Questo sembra funzionare fino a quando non ho i file non ancora nella mia directory di lavoro che non vengono nascosto. Alcune ricerche hanno portato a una richiesta di funzionalità di due anni fa: Option to save untracked and/or ignored files in stash, ma nient'altro.

Devo usare la scorta? Forse c'è un modo migliore che coinvolge i rami temporanei o qualcosa del genere.

risposta

12

Come ho risposto sul relativo domanda, la risposta è SI ora:

A partire dal Git 1.7.7, git stash accetta l'opzione --include-untracked per includere file non monitorate nella vostra scorta.

git stash --include-untracked 

Oppure è possibile utilizzare l'opzione -u breve.

git stash -u 
2

No, git stash "registra solo lo stato corrente della directory di lavoro e dell'indice". Quindi la conservazione non raccoglierà i file non tracciati.

Passare a un ramo temporaneo e tracciare i file non tracciati lì, come suggerito, sembra un approccio ragionevole.

+1

Suppongo che la mia definizione di "directory di lavoro" differisca da quella degli sviluppatori di git. Ho risolto il mio problema utilizzando git-checkout-index in una directory temporanea e costruendo lì. Preferirei comunque usare git-stash se possibile, comunque. –

+0

Questa è sicuramente una strana definizione di "directory di lavoro". Vorrei anche considerare i nuovi file come parte della mia directory di lavoro. – allyourcode

Problemi correlati