2012-04-19 22 views
11

Sto tentando di utilizzare la funzione dei sottomoduli di Gits per includere codice di terze parti in un progetto. Ho solo bisogno di un paio di file dal sottomodulo e desidero escludere tutti i documenti, ecc. Che vengono con esso.Sottomoduli Git - escludi specifici file/directory

Come posso fare questo?

risposta

2

Un sottomodulo git è un repository git incorporato in un altro repository git. Oltre a questo non c'è nulla di speciale in questo: un sottomodulo si comporta allo stesso modo di qualsiasi altro repository git. Ottieni tutti i file e tutta la cronologia associata al repository quando lo cloni.

Se si desidera solo un paio di file e non si è interessati a tracciare la cronologia delle modifiche del progetto di terze parti, è possibile copiare semplicemente i file specifici nel progetto e richiamarli.

+2

Grazie per la risposta. Sfortunatamente, voglio ancora tenere traccia delle modifiche e spingere/tirare il sottomodulo secondo necessità (la libreria di terze parti è la mia) – hamishtaplin

+2

Apprezzo questo. Ho capito che era il caso (ho un problema simile -Sto sviluppando una libreria di sottomoduli, e ogni modulo ha un sacco di codice extra per il test delle unità. Ho davvero bisogno solo dei file .m e .h. Posso lasciare indietro). –

3

Nel mio sottomodulo avevo una cartella /examples che volevo eliminare localmente per impedire che quei file vengano visti da un makefile autogenerato; origin dovette rimanere ignaro della cancellazione.

In git CLI:

git update-index --assume-unchanged <path/to/file>

per tenere traccia ancora una volta modifiche locali:

git update-index --no-assume-unchanged <path/to/file>

O in SourceTree, creare un'azione personalizzata come da Fabian Blechschmidt's answer.

NOTA Questo non è lo stesso di "interrompere il tracciamento", dove origin sarà infatti anche interrompere il tracciamento il file sul commettete - non quello che volete.

Problemi correlati