2013-10-18 9 views
30

Wenn ich .gitignore data/* habe und git clean -fd ausführen, werden der Datenordner und alle seine Inhaltsdateien gelöscht.Wie alle ignorierten Dateien in git clean -fd beibehalten werden?

Ich möchte alle nicht revisionierte Dateien in einem Git Repo löschen, während alle ignorierten Dateien ausgeschlossen werden (d. H. NICHT gittigored Dateien löschen). Was könnte ich tuen?

+0

Standardmäßig sollte 'git clean' * keine ignorierten Dateien entfernen. (Sie müssten die Option '-x' angeben, um ignorierte Pfade zu entfernen.) – Amber

+5

Was, wenn Ihr' .gitignore' 'data /' anstelle von 'data/*' enthält, würden Sie das gleiche Problem beobachten? – VonC

+0

@Amber dachte ich schon. Aber es scheint, dass git clean ignorierte _files_ nicht entfernt, während es ignorierte _folders_ (und deren Inhalt) entfernt. –

Antwort

37

Git normalerweise nicht bereinigt ignorierte Dateien, wenn Sie das -x Flag angeben, aber seltsamerweise bereinigt es, wenn Sie wie Sie konfiguriert haben (folder/*).

Wie @VonC es kommentiert, sollten Sie Ihre .gitignore ändern Sie das Verzeichnis (data/) und nicht als das, was in ihm (data/*) zu ignorieren.

Es ist ein subtiler Unterschied, aber es ist wichtig, git.

+6

Ich stimme meinem Kommentar zu;) +1 – VonC

+2

Die etwas nervige Sache ist, dass, wenn Sie 'Ordner /' anstelle von 'Ordner/*' ignorieren, dann können Sie keine Ausnahmen machen wie '! Ordner/foo'. Es gibt zur Zeit ein Problem wie dieses in Standard gitignore die Github für Visual Studio: https://github.com/github/gitignore/commit/9aa3e1c3a7a5d9a7ecbab67f63eb81e8b4a493b7#commitcomment-6092133 –

+0

Wow, das ist ärgerlich ... Es scheint ein Fehler in Git sauber ? – Erfan

Verwandte Themen