GitIgnore - Ignorieren von bin / aber einschließlich bin / *. refresh

7

Ich versuche, den bin-Ordner eines Webprojekts zu ignorieren, aber schließe die .refresh-Dateien ein, die sich in diesem bin-Ordner befinden.

Folgendes habe ich in meinem .gitignore:

%Vor%

Aber das funktioniert nicht. Was mache ich falsch? Ich habe es auch versucht:

%Vor%

Mit den gleichen Ergebnissen.

Aktualisierung:

Hier ist die Dateistruktur, wenn das hilft, dies zu diagnostizieren:

%Vor%

Sie können sehen, wo sich unsere Gitignore-Datei befindet. Wir wollen nicht die .dll, aber wir wollen die .refresh Datei.

    
Nicholas Head 17.11.2011, 23:57
quelle

6 Antworten

7

Versuchen Sie es unten:

%Vor%

Das liegt daran, dass wenn Sie nur bin oder bin / es nicht in den Ordner absteigt, um nach einer Datei zu suchen. Sie müssen explizit sagen, gehen Sie zum Ordner, aber ignorieren Sie alles und sagen Sie dann nicht ignorieren * .refresh.

Edit für die OP-Struktur:

Dann müssen Sie entweder

1) Schließen Sie projekt1 in den Pfad in Ihrem .gitignore ein :

%Vor%

oder

2) Fügen Sie ein .gitignore in project1 (ich empfehle das) mit dem vorherigen Inhalt hinzu.

    
manojlds 18.11.2011, 00:08
quelle
4

Ich weiß, dass es ein alter Post ist, aber ich hatte immer noch dieses Problem, und mit MsysGit 1.8.0 konnte ich die akzeptierte Antwort von @manojlds nicht verwenden.

Es scheint, als wären die einzigen Muster, die alle bin-Ordner in jeder Tiefe ausschließen, [Bb]in und [Bb]in/ . Laut der gitignore man-Seite ist die mit dem nachgestellten Schrägstrich am richtigsten, da sie nur Verzeichnisse abgleicht und nicht Dateien mit dem Namen "bin". Sobald ich versuche, dem Muster weitere Ebenen hinzuzufügen, z. B. " [Bb]in/* ", wird die Übereinstimmung in jeder Tiefe aufgehoben und es wird wie bei der Manpage relativ zur Position der .gitignore-Datei.

Nun nehme ich an, dass ich einen [Bb]in/ -Eintrag in meiner globalen .gitignore-Datei habe. Die beste Möglichkeit, ein bestimmtes Muster von Dateien (wie .refresh-Dateien) in einem bestimmten bin-Ordner zu entfernen, besteht darin, ein anderes .gitignore zu erstellen file ein Verzeichnis über dem bin-Ordner (dh das Verzeichnis des Projekts) und darin die folgenden Einträge:

%Vor%

Unsere web site project bin-Ordner enthalten niemals Unterordner wie Debug oder Release, aber ich habe es getestet und ignoriert nach wie vor Unterordner im bin-Ordner.

Wenn ich nur den zweiten und dritten Eintrag verwende, wie es die angenommene Antwort vorgeschlagen hat, funktioniert es nicht. Eine intuitive Erklärung ist, dass der erste Eintrag diesen spezifischen bin-Ordner aus dem globalen glob entfernt, so dass sein Inhalt enthalten ist, dann funktioniert der zweite Eintrag wie gewünscht, da er in diesem Fall relativ zur .gitignore-Datei ist und der dritte Eintrag entfernt wird die gewünschten Muster aus dem durch den zweiten Eintrag erzeugten Glob.

    
BlueD 23.04.2013 22:28
quelle
4

Dieser Weg hat bei mir nicht funktioniert:

%Vor%

Ich habe die Syntax unter .gitignore Datei verwendet und funktionierte gut.

Probieren Sie es aus:

%Vor%     
Leandro Sá 12.08.2015 15:09
quelle
3

Folgendes funktioniert für mich:

%Vor%

Beachten Sie, dass die erste Zeile ein abschließendes Sternchen erhielt, um mit allen Inhalten des bin-Verzeichnisses übereinzustimmen, nicht mit dem Verzeichnis selbst. Auf diese Weise können Sie eine Ausnahme vom Glob für * .refresh hinzufügen.

    
Dominik Honnef 18.11.2011 00:08
quelle
1

Eine andere Lösung könnte darin bestehen, REFRESH Dateien von der Kommandozeile zu übernehmen.

git add *.dll.refresh --force

  

- erzwingen   Erlaube das Hinzufügen von sonst ignorierten Dateien.

Dann können Sie einfach alles im bin-Ordner in Ihrer .gitignore-Datei ausschließen. Wenn Sie ein neues Paket hinzufügen, müssen Sie die neue .refresh-Datei erneut einfügen.

    
AAD 13.06.2015 11:37
quelle
0

Mit Roslyn ("Letzte C # - und VB-Funktionen aktivieren" für ein Website-Projekt) wird es jetzt ein Unterverzeichnis innerhalb von 'bin' geben, das .refresh-Dateien enthält, die Sie benötigen. Dies wird aufgrund des Standardverhaltens von git ein Kopfzerbrechen sein, dass, sobald Sie einen Ordner ausschließen, keine Ausnahmen darin gefunden werden (/ directory / * vs /directory/**/.)

Also brauchten wir bin wie folgt:

**/[Bb]in/**/*.*

andernfalls würde das gesamte Roslyn-Verzeichnis ignoriert und dann

!**/*.refresh

    
Mark Sowul 15.02.2018 17:36
quelle

Tags und Links