2010-11-22 5 views
382

Mögliche Duplizieren:
How do I add an empty directory to a git repositoryWie zu .gitigore alle Dateien/Ordner in einem Ordner, aber nicht den Ordner selbst?

Ich möchte in einem leeren Ordner überprüfen. Wie kann ich das machen?

+7

Ich habe ein Upload-Verzeichnis. Ich möchte das leere Verzeichnis festschreiben, aber ohne den ganzen Inhalt. –

+4

Ich hatte genau das gleiche. Habe gerade eine README-Datei hinzugefügt, die erklärt, dass dies das Upload-Verzeichnis ist und git es verstanden hat :) – Evgeny

+0

Sie haben Ihre eigene Frage ziemlich gut beantwortet: Setzen Sie ein .gitignore, das sagt "ignore everything" in diesen Ordner; Das ist Mipadis Antwort. – Cascabel

Antwort

251

Sie können keine leeren Ordner in git festschreiben. Wenn Sie möchten, dass es angezeigt wird, müssen Sie etwas hineinlegen, auch nur eine leere Datei.

Fügen Sie zum Beispiel eine leere Datei in den Ordner, den Sie behalten möchten genannt .gitkeep, dann in Ihrer .gitignore Datei schreiben:

# exclude everything 
somefolder/* 

# exception to the rule 
!somefolder/.gitkeep 

Commit Ihre .gitignore und .gitkeep Dateien und dies sollte lösen Ihre Problem.

+0

Gibt es keine '--bare' Option? – luckytaxi

+8

@luckytaxi: Ein leeres Repository ist eines ohne funktionierenden Baum. Es hat nichts damit zu tun. – Cascabel

+24

Der beste Weg ist wie oben von Trianam aufgeführt. Fügen Sie eine .gitignore-Datei in das Verzeichnis ein. Dieses .gitignore sollte alle Dateien innerhalb dieses Verzeichnisses (*) außer sich selbst (! .gitignore) ignorieren. –

908

dieses .gitignore in den Ordner setzen, dann git add .gitignore

* 
*/ 
!.gitignore 

Die * Linie git sagt alle Dateien in dem Ordner zu ignorieren, aber !.gitignore sagt git noch die .gitignore Datei enthalten. Auf diese Weise erhalten Ihr lokales Repository und alle anderen Klone des Repositorys alle den leeren Ordner und das benötigte .gitignore.

Edit: Kann offensichtlich sein, sondern auch hinzufügen */an die Git ignorieren, um auch Unterordner zu ignorieren.

+34

@ bool.dev Ja, aber jetzt hast du deine .gitignore-Datei ignoriert, was bedeutet, dass sie auf den anderen Kopien deines Repositorys nicht funktioniert: P – Milosz

+3

+1 für die! .gitignore-Zeile, die wirklich leicht zu vergessen gewesen wäre –

+2

Schöne Antwort, wäre aber besser mit einer Erklärung dessen, was vor sich geht, anstatt sich auf Kommentatoren zu verlassen, zu erklären. – jononomo