Wie füge ich Dateien ohne Punkte (alle Dateien ohne Erweiterung) zur gitignore-Datei hinzu?

Lesezeit: 5 Minuten

Wie fuge ich Dateien ohne Punkte alle Dateien ohne Erweiterung
Die unlustige Katze

Wie der Titel schon sagt, ist es möglich, “Dateien ohne Punkte darin” zur Gitignore-Datei hinzuzufügen?

Ich kann mir vorstellen, dass dies all diese lästigen erweiterungslosen Dateien erledigen würde.

  • Es gibt einige erweiterungslose Dateien, die Sie nicht ignorieren möchten: README, LICENSE oder COPYING, INSTALL, Makefile usw., obwohl Sie sie immer zwangsweise hinzufügen können und sie dann verfolgt werden

    – Jakub Narębski

    26. September 2013 um 9:14 Uhr

  • @JakubNarębski guter Punkt. Ich habe es in meine Antwort aufgenommen, um es besser sichtbar zu machen.

    – VonC

    26. September 2013 um 9:34 Uhr

  • mögliches Duplikat von gitignore ohne Binärdateien

    – Verrückter Physiker

    9. Juli 2015 um 19:20 Uhr

Wie fuge ich Dateien ohne Punkte alle Dateien ohne Erweiterung
VonC

Sie können eine ähnliche Kombination ausprobieren wie:

*
!/**/
!*.*

Dass 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)

Darum !/**/ ist wichtig (die übergeordneten Ordner rekursiv auf die Whitelist setzen), wenn wir Dateien auf die Whitelist setzen möchten.

Ich habe dieselbe Regel in ähnlichen Fällen erwähnt wie:

  • Gitignoriere alle bis auf einen Ordner und seinen gesamten Inhalt – unabhängig von der Verschachtelungsebene
  • Git außer einem Unterverzeichnis und seinen Dateien eines ignorierten Verzeichnisses
  • Gitignore schließt bestimmte Dateien in allen Unterverzeichnissen aus

Wie Jakub Narębski kommentiert, möchten Sie vielleicht nicht ignorieren alle erweiterungslose Dateien.

Mein Rat:

  • Fügen Sie zuerst die erweiterungslose Datei hinzu, auf die es ankommt
  • dann bearbeite deine .gitignore wie oben gezeigt: die bereits versionierten Dateien werden nicht ignoriert (auch wenn sie keine Erweiterung haben). Alle anderen werden ignoriert.

Für alle zukünftigen erweiterungslosen Dateien, die Sie versionieren möchten:

git add -f -- myFile

Beachten Sie, dass es mit git 2.9.x/2.10 (Mitte 2016?) möglich sein könnte, eine Datei erneut einzuschließen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen wird wenn es keinen Platzhalter im Pfad gibt, der wieder eingeschlossen wird.

Nguyễn Thái Ngọc Duy (pclouds) versucht, diese Funktion hinzuzufügen:

Da jedoch eine der Regeln für die Wiederaufnahme lautete:

Der Verzeichnisteil in den Wiedereinschlussregeln muss wörtlich sein (d. h. keine Platzhalter)

Das hätte hier sowieso nicht funktioniert.

  • Die Antwort ist völlig richtig. Aber vielleicht ein besserer .gitignore wäre ** und !**.*. Ich weiß, dass dies keinen Unterschied macht, wenn das Sternchen vorangestellt wird, aber es ist deutlicher und solider, wie Shells mit Platzhaltern umgehen …

    – Willem Van Onsem

    10. Januar 2015 um 4:58 Uhr

  • Hinweis: Um mit anderen Ausschlussregeln zu arbeiten, muss dies der erste Regelsatz in Ihrer .gitignore-Datei sein

    – Erich

    12. Januar 2015 um 22:41 Uhr

  • Sie können auch bestimmte Dateien ohne Erweiterung wieder einschließen, z. B. mit !Makefile. Beachten Sie, dass ich mit dieser Lösung in Git 1.7.1 Probleme 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 nicht unterstützt ** Muster noch, siehe Hier!

    – mxmlnkn

    7. März 2018 um 19:57 Uhr


  • ** wurde in Git hinzugefügt 1.8.2. Gibt es einen Nachteil gegenüber der Verwendung !*/ anstatt !/**/?

    – mxmlnkn

    7. März 2018 um 20:03 Uhr


  • @TamaMcGlinn Das sieht aus wie ein regulärer Ausdruck: Gitignore unterstützt keine regulären Ausdrücke.

    – VonC

    3. Oktober 2018 um 15:42 Uhr

1646640492 824 Wie fuge ich Dateien ohne Punkte alle Dateien ohne Erweiterung
Verrückter Physiker

*
!*/
!*.*

* weist Git an, alles zu ignorieren.

!*/ hebt dann alles auf, was ein Verzeichnis ist. Das ist entscheidend.

!*.* Ignoriert alle Dateien mit einer Erweiterung.

Ohne das !*/ Regel, Verzeichnisse ohne a . im Namen nicht aufgeführt und keine der gewünschten Dateien außerhalb des Stammordners hinzugefügt.

Lesen Sie als Referenz diese beiden Abschnitte in der .gitIgnorieren Sie die Dokumentation auffallen:

Ein optionales Präfix “!” die das Muster negiert; Jede übereinstimmende Datei, die durch ein vorheriges Muster ausgeschlossen wurde, wird wieder eingeschlossen. 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 für enthaltene Dateien keine Auswirkung, egal wo sie definiert sind. Setzen Sie einen Backslash (“\”) vor das erste “!” für Muster, die mit einem wörtlichen „!“ beginnen, z. B. „!wichtig!.txt“.

Wenn das Muster mit einem Schrägstrich endet, wird es zum Zwecke der folgenden Beschreibung entfernt, aber es würde nur eine Übereinstimmung mit einem Verzeichnis finden. Mit anderen Worten, foo/ passt zu einem Verzeichnis foo und darunter liegenden Pfaden, aber nicht zu einer regulären Datei oder einem symbolischen Link foo (dies entspricht der Art und Weise, wie pathpec im Allgemeinen in Git funktioniert).

  • Guter Fang. +1. Ich hatte vergessen, meine Antwort mit dieser Regel zu aktualisieren, die ich kürzlich in anderen Antworten von mir verwendet hatte. Ich habe meine Antwort entsprechend aktualisiert.

    – VonC

    9. Juli 2015 um 20:06 Uhr

1646640493 636 Wie fuge ich Dateien ohne Punkte alle Dateien ohne Erweiterung
Ando Avakjan

In meinen Ordnern gibt es viele Dateien mit *.c, *.h, *.txt, *.csv usw. Erweiterungen und Binärdateien ohne Erweiterung. Also musste ich alle Dateien außer ignorieren *.c,*.h und .gitignoreAlso das funktioniert bei mir, von der .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

964240cookie-checkWie füge ich Dateien ohne Punkte (alle Dateien ohne Erweiterung) zur gitignore-Datei hinzu?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy