2011-01-21 8 views
7

C'è un modo per aggiungere una directory a Git, ma escludere estensioni in .gitgnore?C'è un modo per aggiungere una directory a Git ma escludere estensioni in .gitgnore?

per esempio quando ho eseguire un comando per aggiungere una directory come

git add console/* 

git risponde con risposta

$ git add console/* 
The following paths are ignored by one of your .gitignore files: 
console/networkprobing.ppu 
console/opsdatamodule.lrs 
console/opsdatamodule.o 
console/opsdatamodule.ppu 
console/rcacsSystemDM.compiled 
console/rcacsSystemDM.o 
console/rcacsSystemTestProcs.o 
console/rcacsSystemTestProcs.ppu 
Use -f if you really want to add them. 
fatal: no files added 

Come può il comando essere fatto per escludere automaticamente le estensioni .gitignore? Ci sono alcune opzioni aggiuntive da passare?

+0

Sembra che tu stia già ignorando tutti i file in 'console /'. Se non lo è, cosa c'è nel tuo file '.gitignore' e cosa non vuoi escludere? –

risposta

10
git add console/* 

Il problema è che il carattere jolly è espansa da Shell wildcard e non passò direttamente a git, quindi git-add è davvero stato passato ogni file nella directory console [1]. Poiché git-add sta ricevendo ogni file nella directory come argomenti, pensa che potresti davvero provare ad aggiungere un file ignorato, motivo per cui è presente un avviso e suggerisce di usare -f se è quello che stai davvero cercando di fare .

La soluzione è di non utilizzare il globalizzazione della shell, ma invece di passare semplicemente la directory in questo modo.

git add console 

Allo stesso modo il modo corretto per aggiungere tutto per un repo (compresi i file che iniziano con un '') ad eccezione dei file ignorati [2] per un repo è quello di utilizzare git add . e non git add *.

[1] Tranne quelli che iniziano con un '.' supponendo che tu sia su una shell sh simile e non provi questo dal prompt dei comandi di cmd.exe di Windows. Se stai usando il prompt dei comandi di Windows dovresti passare a usare la shell Git-Bash da msysgit o una shell da cygwin a seconda di come hai installato git.
[2] .gitignore viene utilizzato solo per impedire che i file non tracciati vengano tracciati, se il file è già stato rintracciato da git, continuerà a essere trattato normalmente fino a quando non verrà rimosso dal repository. Questo può essere fatto senza effettuare il file effettivo con git rm --cached filename.

7

.gitignore può assumere motivi glob-shell. Così, per esempio, se si desidera ignorare tutti i .jpg file è possibile aggiungere

# Ignore all JPEGs 
*.jpg 

a .gitignore. Se si desidera ignorare solo i JPEG nella nuova directory, è possibile eseguire

new_directory/*.jpg 

Quindi aggiungere semplicemente la directory come di consueto.

+0

Ho spiegato meglio la domanda con un esempio del comando e dell'output di git – vfclists

Problemi correlati