751 Stimmen

Wie ignoriert Git Unterordner / Unterverzeichnisse?

Ich habe eine Reihe von Projekten in meinem .net Lösung. Ich möchte alle "bin/Debug"- und "bin/Release"-Ordner (und deren Inhalte) ausschließen, aber den "bin"-Ordner selbst und alle darin enthaltenen DLLs einschließen.

.gitignore mit "bin/" ignoriert " Debuggen " und " Freigabe "Ordner, sondern auch alle im "bin"-Ordner enthaltenen dlls.

bin/Debug o bin/Release im .gitignore Datei schließt die Verzeichnisse nicht aus, es sei denn, ich qualifiziere das Ignoriermuster vollständig als Solution/Project/bin/Debug - was ich nicht tun möchte, da ich dieses vollständige Muster für jedes Projekt in meine Lösung aufnehmen und für jedes neu hinzugefügte Projekt hinzufügen muss.

Irgendwelche Vorschläge?

921voto

Josh Lee Punkte 159535

Haben Sie es mit Wildcards versucht?

Solution/*/bin/Debug
Solution/*/bin/Release

Mit Version 1.8.2 von git können Sie auch die ** um eine beliebige Ebene von Unterverzeichnissen zu finden:

**/bin/Debug/
**/bin/Release/

162voto

Andreas Punkte 1859

Sie können .gitignore in der obersten Ebene verwenden, um alle Verzeichnisse im Projekt mit demselben Namen zu ignorieren. Zum Beispiel:

Debug/
Release/

Dies sollte sofort aktualisiert werden, damit es sichtbar ist, wenn Sie git status aufrufen. Vergewissern Sie sich, dass diese Verzeichnisse nicht bereits zu Git hinzugefügt wurden, da dies die Ignorierung außer Kraft setzt.

134voto

ajacian81 Punkte 6971

Alle oben genannten Antworten sind gültig, aber etwas, das meiner Meinung nach nicht erwähnt wird, ist, dass Sie, sobald Sie eine Datei aus diesem Verzeichnis in das Projektarchiv hinzufügen, das Verzeichnis/Unterverzeichnis, das diese Datei enthält, nicht mehr ignorieren können (Git ignoriert diese Anweisung).

Um bereits hinzugefügte Dateien zu ignorieren, führen Sie

$ git rm -r --cached .

Andernfalls müssen Sie zuerst alle Dateien aus dem Zielverzeichnis des Repo entfernen - und dann können Sie diesen Ordner ignorieren.

83voto

mgold Punkte 5871

Die Frage zielt nicht darauf ab, alle Unterverzeichnisse zu ignorieren, aber ich konnte die Antwort nirgends finden, also werde ich sie hier veröffentlichen: */* .

61voto

A. Morel Punkte 7255

Um Inhalte und Unterverzeichnisse auszuschließen:

**/bin/*

Um nur alle Unterverzeichnisse auszuschließen, aber den Inhalt zu übernehmen, fügen Sie "/" hinzu:

**/bin/*/

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