Ich habe eine Gitignore-Datei, die Git dazu bringt, *.dllDateien zu ignorieren , und das ist eigentlich das Verhalten, das ich will. foo.dllWie kann ich dies jedoch erreichen, wenn ich eine Ausnahme möchte (dh festschreiben kann )?
Ich habe eine Gitignore-Datei, die Git dazu bringt, *.dllDateien zu ignorieren , und das ist eigentlich das Verhalten, das ich will. foo.dllWie kann ich dies jedoch erreichen, wenn ich eine Ausnahme möchte (dh festschreiben kann )?
Antworten:
Verwenden:
*.dll #Exclude all dlls
!foo.dll #Except for foo.dll
Von Gitignore :
Ein optionales Präfix! was das Muster negiert; Alle übereinstimmenden Dateien, die von einem vorherigen Muster ausgeschlossen wurden, werden wieder aufgenommen. Wenn ein negiertes Muster übereinstimmt, überschreibt dies Musterquellen mit niedrigerer Priorität.
*.dlles und der gitignore meines Projekts hat es, !Libs/*.dllaber das scheint nicht zu funktionieren.
!Libs/**/*.dll.
!**/Libs/*.dllje nach Ordnerstruktur.
!foo.dllden Befehl ungültig gemacht. Wenn ich den Kommentar in einer separaten Zeile hinzufüge, funktioniert es.
Git ignoriert Ordner, wenn Sie schreiben:
/js
Es können jedoch keine Ausnahmen hinzugefügt werden, wenn Sie:
!/js/jqueryoder !/js/jquery/oder!/js/jquery/*
Sie müssen schreiben:
/js/*
und nur dann können Sie solche Unterordner ausnehmen
!/js/jquery
!/js/jquery/xyzlibwerden sie nicht ignoriert ...
/js/*, !/js/jquery, /js/jquery/*, !/js/jquery/xyzlib? Fühlt sich wie eine ziemlich lustige Art an, es zu tun ...
Sie können einfach git add -f path/to/foo.dll.
.gitignore ignoriert nur Dateien für das übliche Tracking und ähnliches git add .
-fsagt git, um das Hinzufügen dieser Datei im Repo zu erzwingen, da es es möglicherweise zuerst wegen Ihrer.gitignore
Gehen Sie wie folgt vor, um alles in einem Verzeichnis, aber einige Unterverzeichnisse, auszuschließen:
wp-content/*
!wp-content/plugins/
!wp-content/themes/
Quelle: https://gist.github.com/444295
Fügen Sie einfach !vor einer Ausschlussregel hinzu.
Laut der gitignore-Manpage :
Muster haben das folgende Format:
...
- Ein optionales Präfix! was das Muster negiert; Alle übereinstimmenden Dateien, die von einem vorherigen Muster ausgeschlossen wurden, werden wieder aufgenommen. Wenn ein negiertes Muster übereinstimmt, überschreibt dies Musterquellen mit niedrigerer Priorität.
!foo.dll in .gitignore oder (jedes Mal!) git add -f foo.dll
Wenn Sie mit Visual Studio arbeiten und sich Ihre DLL zufällig in einem binOrdner befindet, müssen Sie eine Ausnahme für den jeweiligen Bin-Ordner selbst hinzufügen, bevor Sie die Ausnahme für die DLL-Datei hinzufügen können. Z.B
!SourceCode/Solution/Project/bin
!SourceCode/Solution/Project/bin/My.dll
Dies liegt daran, dass die Standarddatei von Visual Studio .gitignoreein Ignoriermuster für enthält[Bbin]/
Dieses Muster zappt alle Bin-Ordner (und folglich deren Inhalt), wodurch jeder Versuch, den Inhalt einzuschließen, überflüssig wird (da der Ordner selbst bereits ignoriert wird).
Ich konnte herausfinden, warum meine Datei nicht durch Ausführen ausgenommen wurde
git check-ignore -v -- SourceCode/Solution/Project/bin/My.dll
aus einem Git Bash Fenster. Dies gab das [Bbin]/Muster zurück.
Die Lösung hängt von der Beziehung zwischen der Git-Ignorierregel und der Ausnahmeregel ab:
Dateien / Dateien in verschiedenen Ebenen oder Dateien / Unterordner: Sie können dies tun:
*.suo
*.user
*.userosscache
*.sln.docstates
# ...
# Exceptions for entire subfolders
!SetupFiles/elasticsearch-5.0.0/**/*
!SetupFiles/filebeat-5.0.0-windows-x86_64/**/*
# Exceptions for files in different levels
!SetupFiles/kibana-5.0.0-windows-x86/**/*.suo
!SetupFiles/logstash-5.0.0/**/*.suo
Seit Git 2.7.0 berücksichtigt Git Ausnahmen. Aus den offiziellen Versionshinweisen:
- Lassen Sie ein späteres "! / Abc / def" ein früheres "/ abc" überschreiben, das in derselben .gitignore-Datei angezeigt wird, um das Ausdrücken von "alles im Verzeichnis / abc wird ignoriert, außer ..." zu vereinfachen.
https://raw.githubusercontent.com/git/git/master/Documentation/RelNotes/2.7.0.txt