1182 Stimmen

Wie kann man alle Dateien/Ordner in einem Ordner mit .gitignore versehen, aber nicht den Ordner selbst?

Ich möchte einen leeren Ordner in mein Git-Repository einchecken. Dazu muss ich alle Dateien und Ordner innerhalb des Ordners ignorieren, nicht aber den Ordner selbst. Wie kann ich das tun? Was sollte ich in mein .gitignore Datei?

Für diejenigen, die sich fragen, warum ich das tun sollte: Ich habe ein Verzeichnis "upload" in meinem Repository. Ich möchte das leere Verzeichnis übertragen, aber ohne den gesamten Inhalt.

8 Stimmen

Ich hatte genau dasselbe Problem. Ich habe einfach eine README-Datei hinzugefügt, die erklärt, dass dies das Upload-Verzeichnis ist, und Git hat es verstanden :)

1 Stimmen

Sie haben sich Ihre Frage selbst beantwortet: Legen Sie eine .gitignore-Datei mit der Aufschrift "alles ignorieren" in diesen Ordner; das ist die Antwort von mipadi.

1 Stimmen

Dies ist nützlich, um einen leeren Build-Ordner in Git zu erstellen. Der Inhalt des Build-Ordners muss nicht eingecheckt werden

1811voto

Trianam Punkte 15483

Setzen Sie diese .gitignore in den Ordner, dann git add .gitignore .

*
*/
!.gitignore

El * Zeile weist Git an, alle Dateien im Ordner zu ignorieren, aber !.gitignore sagt git, dass es weiterhin die .gitignore Datei. Auf diese Weise erhalten Ihr lokales Repository und alle anderen Klone des Repositorys sowohl den leeren Ordner als auch die .gitignore es braucht.

Bearbeiten: Es mag offensichtlich sein, aber fügen Sie auch hinzu */ zum .gitignore um auch Unterordner zu ignorieren.

101 Stimmen

Verzeichnisse ignorieren */ ist nicht erforderlich, da * umfasst auch Verzeichnisse.

6 Stimmen

NB "Es ist nicht möglich, eine Datei erneut einzuschließen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen ist."

5 Stimmen

Workaround für @TimofeyGorshkovs obigen Punkt: * ; !dir/ ; dir/* ; !dir/reincludefile

1072voto

kubi Punkte 46128

Sie können keine leeren Ordner in Git übertragen. Wenn Sie wollen, dass es angezeigt wird, müssen Sie etwas darin ablegen, auch wenn es nur eine leere Datei ist.

Fügen Sie zum Beispiel eine leere Datei namens .gitkeep zu dem Ordner, den Sie behalten möchten, und dann in Ihrem .gitignore Datei schreiben:

# exclude everything
somefolder/*

# exception to the rule
!somefolder/.gitkeep 

Verpflichten Sie sich .gitignore y .gitkeep Dateien und dies sollte Ihr Problem beheben.

2 Stimmen

Gibt es nicht eine --bare Option?

70 Stimmen

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

0 Stimmen

Nur die Übergabe eines leeren Ordners löst nicht das Problem der Sicherheit, dass Dateien in diesem Ordner niemals abgefangen werden. Besser ist es, eine .gitignore-Datei zu verwenden, wie @Trianam unten gezeigt hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X