Ich habe viele Projekte in meiner .Net-Lösung. Ich möchte alle Ordner "bin / Debug" und "bin / Release" (und deren Inhalt) ausschließen, aber trotzdem den Ordner "bin" selbst und alle darin enthaltenen DLLs einschließen.
.gitignore mit "bin /" ignoriert die Ordner "Debug" und "Release", aber auch alle im Ordner "bin" enthaltenen DLLs.
"bin / Debug" oder "bin / Release" in der .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 so tun möchte wie ich Dieses vollständige Muster muss für jedes Projekt in meine Lösung aufgenommen und für alle neu hinzugefügten Projekte hinzugefügt werden.
Irgendwelche Vorschläge?
Antworten:
Haben Sie Wildcards ausprobiert?
Mit Version 1.8.2 von git können Sie den
**
Platzhalter auch verwenden , um eine beliebige Ebene von Unterverzeichnissen abzugleichen :quelle
**
. Sollte jetzt behoben sein. LinkSie können .gitignore in der obersten Ebene verwenden, um alle Verzeichnisse im Projekt mit demselben Namen zu ignorieren. Zum Beispiel:
Dies sollte sofort aktualisiert werden, damit es sichtbar ist, wenn Sie den Git-Status ausführen. Stellen Sie sicher, dass diese Verzeichnisse nicht bereits zu git hinzugefügt wurden, da dies die Ignorierungen überschreibt.
quelle
$GIT_DIR/.git/info/exclude
Datei erreicht werden.git rm -rf DirectoryName/
Bei der Frage geht es nicht darum, alle Unterverzeichnisse zu ignorieren, aber ich konnte die Antwort nirgendwo finden, also werde ich sie posten :
*/*
.quelle
git add
ein Verzeichnis und alle Dateien in allen Unterverzeichnissen dieses Verzeichnisses nicht ignorieren. Ich habe versuchtdirname/
,dirname/*
,dirname/**
,dirname/*/*
, auch in Verzweiflungdirname/*/*/*
,dirname/*/*/*/*
,dirname/*/*/*/*/*
.*/*
ignoriert alle Unterverzeichnisse, jedoch keine Dateien im aktuellen Verzeichnis. Das Ignorieren eines bestimmten Unterverzeichnisses ist eine normale Verwendung von Gitignoren.dirname
,dirname/
Unddirname/*
alle Arbeit für mich. Wurde bereits etwas in diesem Verzeichnis festgeschrieben?.git
Verzeichnis zwischen den Versuchen undgit init
danngit add --all .
(habe es auch ohne versucht--all
) mit 1.9.4.msysgit.1. Jedes nicht leere Unterverzeichnis unter meinem benannten Verzeichnis wird dem Index hinzugefügt (aktiviert in TortoiseGit undgit status
). Es gibt keine relevanten Zeilen beim.gitignore
Starten,!
aber es muss ein Konflikt vorliegen. Vorerst durch Entfernen der Ordner während gelöstadd
. Vermutlich ist dies etwas, das etwas mehr Graben erfordert, um die notwendigen Informationen für die Diagnose bereitzustellen. Vielen Dank, dass Sie mir versichert haben, dass ich die Syntax nicht falsch verstehe.Alle oben genannten Antworten sind gültig, aber etwas, von dem ich glaube, dass es nicht erwähnt wird, ist, dass Sie, sobald Sie eine Datei aus diesem Verzeichnis zum Repo hinzugefügt haben, das Verzeichnis / Unterverzeichnis, das diese Datei enthält, nicht ignorieren können (git ignoriert diese Anweisung ).
Um bereits hinzugefügte Dateien zu ignorieren, laufen Sie
Andernfalls müssen Sie zuerst alle Dateien aus dem Zielverzeichnis des Repos entfernen - und dann können Sie diesen Ordner ignorieren.
quelle
Neben dem Einfügen der richtigen Einträge in Ihre Gitignore-Datei müssen Sie dies tun
git rm -r /path/to/dir
und festschreiben, bevor Sie das Verzeichnis zu Ihrer Gitignore-Datei hinzufügen , wenn Sie versuchen, etwas zu ignorieren, das bereits zum Repo hinzugefügt wurde . Andernfalls wird git nur Ihre Ignorieranweisung ignorieren.quelle
Die einzige Möglichkeit, dies auf meiner Maschine zum Laufen zu bringen, bestand darin, es folgendermaßen zu tun:
Beachten Sie, wie Sie Inhalte für jede Ebene, die Sie einschließen möchten, explizit zulassen müssen. Wenn ich also Unterverzeichnisse 5 tief unter Themen habe, muss ich das noch formulieren.
Dies stammt aus @ Yarins Kommentar hier: https://stackoverflow.com/a/5250314/1696153
Dies waren nützliche Themen:
Ich habe es auch versucht
und
**/wp-content/themes/**
oder
/wp-content/themes/**/*
Nichts davon hat auch für mich funktioniert. Viel Spur und Irrtum!
quelle
So schließen Sie Inhalte und Unterverzeichnisse aus:
Fügen Sie "/" hinzu, um alle Unterverzeichnisse auszuschließen, aber den Inhalt zu übernehmen:
quelle
Um alle Unterverzeichnisse zu ignorieren, können Sie einfach Folgendes verwenden:
Dies funktioniert ab Version 1.8.2 von git.
quelle
Die generische Möglichkeit, alle Unterordner zu ignorieren und gleichzeitig die Dateien im
/bin
Verzeichnis zu verfolgen, besteht darin, der Gitignore-Datei Ihres Projekts die folgende Zeile hinzuzufügen:Wenn Sie nur bestimmte benannte Unterordner ignorieren möchten, haben Sie folgende Möglichkeiten:
nb. Wenn sich das
bin
Verzeichnis nicht im Stammverzeichnis Ihres Projekts befindet (neben der .gitignore-Datei), dann anstelle von z.bin/*/*
du brauchst vielleichtpath/to/bin/*/*
quelle