2011-11-13 13 views
5

Ho inviato il mio repository locale a GitHub. Nel processo di commit del mio codice, ho dimenticato di creare un file .gitignore. Di conseguenza, ho commesso e successivamente inviato alcune cartelle e file che non volevo su GitHub (o nel mio repository locale, per quello).Come applicare gitignore in seguito?

Come è possibile applicare .gitignore ora, in modo che sia possibile rimuovere cartelle e file indesiderati in futuro?

risposta

6

È possibile git rm <unnecessary file and folder names> quindi aggiungerli al file .gitignore, che rimuoverli da quel impegnarsi in avanti. Il problema è che rimarranno nella storia a meno che tu non modifichi i commit precedenti. Se non ci sono dati sensibili in questi file, direi di lasciare la cronologia così com'è. Se è necessario rimuovere i dati sensibili dalla cronologia del repository, vedere GitHub's help article on the subject

2

Dalla memoria è necessario rimuoverlo e riaggiungerlo. Git ignora avrà quindi effetto.

Answered already?

2

Se questo è il vostro repo privata e non è stato ancora pubblicato, utilizzare filter-branch per modificare la storia:

git filter-branch --index-filter ' 
    git rm -r --cached --ignore-unmatched bin; 
' --all 

Quindi, aggiungere/modificare il file di .gitignore:

>> .gitignore echo bin 
git add .gitignore 
git commit -m 'add gitignore files' 

Dato che hai già pubblicato la tua h storia, è meglio non riscriverlo. Basta rimuovere la directory bin e aggiungere un file .gitignore

git rm -r bin 
# add .gitignore 
git commit -m 'remove and ignore bin folder' 
+0

è un approccio per eliminare automaticamente tutte le cartelle/file utilizzando gitignore? Devo davvero eseguire i comandi per ogni file/cartella che voglio cancellare? – Rookian

+0

Si può semplicemente fare 'git rm -r --cached --ignore-file non corrispondente1 cartella1 file2 cartella2 cartella3 * bak test- *'. Assicurati di capire le implicazioni della riscrittura della storia, se segui la rotta 'filter-branch'! – knittl