Il mio commit iniziale conteneva alcuni file di log. Ho aggiunto *log
al mio .gitignore
, e ora voglio rimuovere i file di log dal mio repository.
git rm mylogfile.log
rimuoverà un file dal repository, ma lo rimuoverà anche dal file system locale.
Come posso rimuovere questo file dal repo senza cancellare la mia copia locale del file?
Dal file man:
Quando viene dato --cached
, il contenuto dello staged deve corrispondere o alla punta del ramo o al file sul disco, permettendo al file di essere rimosso solo dall'indice.
Quindi, per un singolo file
git rm --cached mylogfile.log
e per una singola directory:
git rm --cached -r mydirectory
Per rimuovere un'intera cartella dal repo (come i file di Resharper), fate così:
git rm -r --cached folderName
Avevo impegnato alcuni file di resharper e non volevo che persistessero per gli altri utenti del progetto.
Inoltre, se avete committato dati sensibili (ad esempio un file contenente password), dovreste cancellarlo completamente dalla storia del repository. Ecco una guida che spiega come farlo: http://help.github.com/remove-sensitive-data/