Wie der Titel schon sagt, ist es möglich, der gitignore-Datei "Dateien ohne Punkte" hinzuzufügen?
Ich kann mir vorstellen, dass dies all diese lästigen Dateien ohne Erweiterung erledigen würde.
Wie der Titel schon sagt, ist es möglich, der gitignore-Datei "Dateien ohne Punkte" hinzuzufügen?
Ich kann mir vorstellen, dass dies all diese lästigen Dateien ohne Erweiterung erledigen würde.
Antworten:
Sie können eine ähnliche Kombination ausprobieren:
*
!/**/
!*.*
Diese gitignore
Ausschlussregel (ein negiertes Muster ) sollte alle Dateien außer denen mit einer Erweiterung ignorieren.
Wie unten von Mad Physicist erwähnt , lautet die Regel:
Es ist nicht möglich, eine Datei erneut einzuschließen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen ist. (*
)
(*
: es sei denn, bestimmte Bedingungen sind in Git 2.?+ erfüllt, siehe unten)
Aus diesem Grund !/**/
ist es wichtig, die übergeordneten Ordner rekursiv in die weiße Liste aufzunehmen, wenn Dateien in die weiße Liste aufgenommen werden sollen.
Ich erwähnte dieselbe Regel in ähnlichen Fällen wie:
Wie Jakub Narębski kommentiert , möchten Sie möglicherweise nicht alle Dateien ohne Erweiterung ignorieren .
Mein Rat:
.gitignore
Dateien wie oben gezeigt: Die bereits versionierten Dateien werden nicht ignoriert (auch wenn sie keine Erweiterung haben). Alle anderen werden ignoriert.Für zukünftige erweiterungslose Dateien, die Sie versionieren möchten:
git add -f -- myFile
Beachten Sie, dass es mit git 2.9.x / 2.10 (Mitte 2016?) Möglicherweise möglich ist, eine Datei erneut einzuschließen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen wird, wenn der wieder aufgenommene Pfad keinen Platzhalter enthält .
Nguyễn Thái Ngọc Duy ( pclouds
) versucht, diese Funktion hinzuzufügen:
Da jedoch eine der Regeln für die Wiedereingliederung lautete:
Der Verzeichnisteil in den Regeln zum erneuten Einschließen muss wörtlich sein (dh keine Platzhalter).
Das hätte hier sowieso nicht funktioniert.
.gitignore
wäre **
und !**.*
. Ich weiß, dass dies keinen Unterschied macht, wenn das Sternchen vorne platziert wird, aber es ist expliziter und fundierter, wie Muscheln mit Platzhaltern umgehen ...
!Makefile
. B. mit . Beachten Sie, dass ich Probleme mit dieser Lösung in Git 1.7.1 hatte, während sie in 1.9.0 einwandfrei funktionierte. In meinem Fall funktionierte das Hinzufügen einer Datei im Stammverzeichnis einwandfrei, aber das Hinzufügen einer Datei mit einer Erweiterung in einem Unterverzeichnis wurde als ignoriert angezeigt. Dies scheint daran zu liegen, dass 1.7.1 das **
Muster noch nicht unterstützt hat, siehe hier !
**
wurde in Git hinzugefügt 1.8.2
. Gibt es einen Nachteil gegenüber der Verwendung !*/
anstelle von !/**/
?
*
!*/
!*.*
*
sagt git, alles zu ignorieren.
!*/
hebt dann alles auf, was ein Verzeichnis ist. Das ist entscheidend.
!*.*
hebt die Zuordnung aller Dateien mit einer Erweiterung auf.
Ohne die !*/
Regel würden Verzeichnisse ohne ein .
im Namen nicht aufgelistet und keine Ihrer gewünschten Dateien würde außerhalb des Stammordners hinzugefügt.
Als Referenz lesen Sie diese beiden Abschnitte in der .gitignore Dokumentation auffallen:
Ein optionales Präfix "!" was das Muster negiert; Alle übereinstimmenden Dateien, die von einem vorherigen Muster ausgeschlossen wurden, werden wieder aufgenommen. Es ist nicht möglich, eine Datei erneut einzuschließen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen ist. Git listet aus Leistungsgründen keine ausgeschlossenen Verzeichnisse auf, daher haben alle Muster in enthaltenen Dateien keine Auswirkung, unabhängig davon, wo sie definiert sind. Setzen Sie einen Backslash ("\") vor das erste "!" für Muster, die mit einem wörtlichen "!" beginnen, zum Beispiel "! wichtig! .txt".
Wenn das Muster mit einem Schrägstrich endet, wird es zum Zweck der folgenden Beschreibung entfernt, es wird jedoch nur eine Übereinstimmung mit einem Verzeichnis gefunden. Mit anderen Worten, foo / stimmt mit einem Verzeichnis foo und Pfaden darunter überein, stimmt jedoch nicht mit einer regulären Datei oder einem symbolischen Link foo überein (dies stimmt mit der allgemeinen Funktionsweise von pathspec in Git überein).
In meinen Ordnern befinden sich viele Dateien mit *.c, *.h, *.txt, *.csv
usw. Erweiterungen und Binärdateien ohne Erweiterung. Also musste ich alle ausgeführten Dateien ignorieren *.c,*.h
und .gitignore
, so funktioniert das für mich aus dem .gitignore
Beispiel:
*/* #ignore all files in each directory
!*/*.c #unignore .c files in each directory
!*/*.h #unignore .h header files in each directory
!.gitignore #unignore .gitignore
README
,LICENSE
oderCOPYING
,INSTALL
,Makefile
usw., obwohl Sie immer-add zwingen, und dann werden sie verfolgt