2011-09-29 9 views
21

Cerco di rimuovere i file non necessari dal repository git. I file sono stati inizialmente aggiunti e ora sono in diversi rami. Quello che voglio è semplicemente smettere di rintracciare le modifiche in quei file, non mi interessa quali modifiche dovrebbero rimanere lì, ma ho bisogno che i file rimangano sul file system.git rimuove il file dal repository ma lo lascia sul file system

ho cercato seguente

git filter-branch --index-filter "git rm --cached --ignore-unmatch file_to_remove" HEAD 

ma questo file rimosso dal file system che cosa è indesiderabile.

+1

Io di solito copiare i file da qualche parte prima di eseguire quel comando. Dopo che Git li ha cancellati, li aggiungo a .gitignore e quindi spostiamo le copie. –

+0

Hmm, bel trucco. Non ci ho pensato –

+1

@misha Vuoi smettere di rintracciarli o rimuoverli completamente dal repository? Tu dici una cosa nella tua domanda e un'altra in un commento. – Andy

risposta

27

Just:

git rm --cached file [file ...] 

Naturalmente è necessario assicurarsi che i file incriminati vengono aggiunti al .gitignore in modo che non vengano reimpegnati subito

+1

Voglio rimuoverli completamente dal repository da tutti i rami. Quando faccio come dici tu, il file non è più tracciabile, ma non posso cambiare ramo, git dice "L'unione di livello file è necessaria. Rimanere sul ramo '. –

2

Se si desidera mantenere il file nel repository, è possibile utilizzare:
git update-index --assume-unchanged <fileName>

questo mantiene la versione corrente del file nell'indice, ma si può cambiare tutto quello che volete e git ignorerà quelli cha NGES.

+0

Ho scoperto che il suo approccio è valido solo come soluzione temporanea ** temporanea. Ti verrà impedito di controllare un altro ramo in cui il contenuto del file è diverso da quello del ramo corrente. –

0

Checkout ed eseguire git clean per ogni ramo.

git-pulito - Rimuovere i file non monitorate dalla albero di lavoro

Pulisce l'albero di lavoro, eliminando in modo ricorsivo i file che non sono sotto il controllo di versione, a partire dalla directory corrente.

https://git-scm.com/docs/git-clean

Problemi correlati