2012-09-20 2 views
5

ich folgende .gitignore Datei (global) verwenden:Git: Ignorieren Sie nur Inhalt des Ordners

.idea 
.svn 
/media/covers/* 
/media/tmp/* 
/media/cache/* 
/bin 
/include 
/lib 
/local 
*.log 
*.pot 
*.pyc 
local_settings.py 

So in media/covers, media/tmp, media/cache Ich möchte alle Dateien und Ordner ignorieren, aber nicht diese Verzeichnisse selbst . Diese .gitignore Datei media/covers, media/tmp, media/cache dirs ignorieren, wie kann ich fix it?

TIA!

+1

Git Verzeichnisse überhaupt nicht, verfolgt nur Dateien in den Verzeichnissen. – twalberg

Antwort

14

eine .gitignore Datei in das Verzeichnis hinzufügen, die Sie behalten möchten. Innerhalb dieses Verzeichnis

setzen
* 

Nun, wenn Sie ein Git-Status zu tun, werden Sie sehen, dass der Inhalt nicht nachverfolgt werden als aktuell, nur die .gitignore Datei. Und da sich die Datei .gitignore im Verzeichnis befindet, bedeutet dies, dass das Verzeichnis verfolgt wird, aber keine anderen Inhalte.

5

Git nicht leere Verzeichnisse der Index hinzuzufügen. Ich vermute, dass diese Verzeichnisse ausgeschlossen werden, weil sie leer sind, nicht weil die Übereinstimmung die Regeln ignoriert.

Eine Möglichkeit, die Menschen lösen, besteht darin, eine leere Datei namens .gitkeep in den Verzeichnissen zu erstellen, die sie gerne behalten würden. So könnte man die Datei zu media/covers hinzufügen, media/tmp usw. Dann fügen Sie !*.gitkeep/ zu Ihrer .gitignore Datei.

+0

Ich mag die Idee einer .gitkeep Datei. Es ist selbsterklärend, eine Art zu sprechen. Vielen Dank! –

+0

jetzt funktioniert es nicht? –