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?

41voto

MidnightJava Punkte 1769

Wenn Sie versuchen, etwas zu ignorieren, das bereits zum Projektarchiv hinzugefügt wurde, müssen Sie nicht nur die richtigen Einträge in Ihre .gitignore-Datei aufnehmen, sondern auch Folgendes tun git rm -r /path/to/dir und übertragen Sie das, bevor Sie das Verzeichnis zu Ihrer .gitignore-Datei hinzufügen. Andernfalls wird Git nur Ihre ignore-Direktive ignorieren.

38voto

Katie Punkte 41284

Auf meinem Rechner konnte ich das nur auf diese Weise erreichen:

# Ignore all directories, and all sub-directories, and it's contents:
*/*

#Now ignore all files in the current directory 
#(This fails to ignore files without a ".", for example 
#'file.txt' works, but 
#'file' doesn't):
/*.*

#Only Include these specific directories and subdirectories:
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/

Beachten Sie, dass Sie für jede Ebene, die Sie einbeziehen möchten, ausdrücklich Inhalte zulassen müssen. Wenn ich also 5 Unterverzeichnisse unter "themes" habe, muss ich das immer noch explizit angeben.

Dies stammt aus dem Kommentar von @Yarin hier: https://stackoverflow.com/a/5250314/1696153

Dies waren nützliche Themen:

Ich habe auch versucht

*
*/*
**/**

y **/wp-content/themes/**

o /wp-content/themes/**/*

Das hat bei mir auch nicht funktioniert. Viele Versuche und Irrtümer!

22voto

Tolga Punkte 1993

El einfachste Form um alle Unterordner des Stammverzeichnisses Ihres Projektarchivs in Ihrer .gitignore-Datei zu ignorieren, ist:

*/

Wenn Sie alle Unterordner eines anderen Unterordners ignorieren möchten:

subfolder/*/

Wenn Sie bereits Elemente übertragen haben, die ignoriert werden sollen, müssen Sie diese aus dem Projektarchiv entfernen, bevor sie ignoriert werden.

Um alle Unterordner des Stammverzeichnisses Ihres Repos zu entfernen:

git rm -r --cached */*

So entfernen Sie alle Unterordner eines anderen Unterordners:

git rm -r --cached subfolder/*/*

16voto

frederickjh Punkte 1573

Um alle Unterverzeichnisse zu ignorieren, können Sie einfach verwenden:

**/

Dies funktioniert ab der Version 1.8.2 von git.

12voto

Nick F Punkte 9196

Der generische Weg, alle Unterordner zu ignorieren, während die Dateien, die sich im /bin Verzeichnis wäre, die folgende Zeile in die .gitignore-Datei Ihres Projekts einzufügen:

bin/*/*

Wenn Sie nur bestimmte benannte Unterordner ignorieren wollen, können Sie das tun:

bin/Debug/*
bin/Release/*

nb. wenn die bin Verzeichnis nicht im Root Ihres Projekts ist (neben der .gitignore-Datei), dann wird anstelle von z.B.. bin/*/* Sie benötigen möglicherweise path/to/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