2014-09-06 9 views
8
$ cat .gitignore 

# OSX 
*/.DS_Store 
.DS_Store 
.DS_Store? 
._* 
.Spotlight-V100 
.Trashes 
Icon? 
ehthumbs.db 
Thumbs.db 

$ git status 
On branch develop 
Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: Assets/Sprites/.DS_Store 

no changes added to commit (use "git add" and/or "git commit -a") 

Ci sono file più indipendenti nella .gitignore e messaggio di stato in questo momento, ma .gitignore in sé non viene modificato, questa versione è impegnata..DS_Store appare ancora in stato di git pur essendo in .gitignore

Come posso risolvere il problema?

+0

possibile duplicato di [Git diff non ignora i file specificati in .gitignore] (http://stackoverflow.com/questions/17820056/git-diff-doesnt-ignore-specified-files-in-gitignore) –

risposta

8

Assicurarsi .DS_Store non è nella cache:

git rm --cached -- Assets/Sprites/.DS_Store 
10

.DS_Store appare ancora in git status pur essendo in .gitignore

Che .DS_Store file viene elencato come un file modificato in uscita di git status, il che significa che è attualmente monitorato da Git. Tuttavia, Git non ignorerà un file che viene attualmente monitorato, indipendentemente dal fatto che sia elencato nel file .gitignore o meno.

Come ti sei trovato in quella situazione? È necessario aver inavvertitamente iniziato a rintracciare il file .DS_Storeprima del aggiungendo la voce .DS_Store nello .gitignore.

.gitignore non viene modificato, questa versione è stata confermata.

L'elenco dei file da ignorare non è determinato da alcuna versione del file .gitignore che potresti aver commesso, come sembri credere. Invece, in qualsiasi momento, Git usa il file .gitignore che si trova nell'albero di lavoro (se presente).

Come posso risolvere il problema?

è necessario dire a Git di smettere di monitoraggio che .DS_Store di file, eseguendo

git rm --cached -- <path_to_the_.DS_Store-file> 

A causa della bandiera --cached, il file problematico .DS_Store non verrà rimosso dal vostro albero di lavoro, ma sarà non essere incluso nei tuoi successivi commit, e dovrebbe essere correttamente ignorato da allora in poi.

+0

I lo ha fatto senza '--', e invece solo il filepath ' git rm --cached./DS_Store' e funzionava ancora. Cosa fa il '--'? – ahnbizcad

+0

@ahnbizcad Vedi http://stackoverflow.com/questions/22750028/in-git-what-does-dash-dash-mean?lq=1 – Jubobs

+0

'-' assicura che le cose vadano bene ... (Ad esempio se il tuo file il nome inizia con un carattere '-') – ahnbizcad

Problemi correlati