Wie ignoriere ich alle versteckten Verzeichnisse / Dateien rekursiv in einem Git-Repository?

128

Ich möchte, dass Git alle versteckten Dateien und Verzeichnisse ignoriert. dh

  • .aptitude
  • .ssh/
  • .bash_rc
  • config/.hidden

Gibt es eine einfache Regel, um dies abzudecken, ohne jeden Eintrag speziell hinzuzufügen?

Poe
quelle

Antworten:

165

Fügen Sie einfach ein Muster hinzu .gitignore

.*
!/.gitignore

Bearbeiten: Die .gitignoreDatei selbst wurde hinzugefügt (wichtig, wenn sie noch nicht festgeschrieben ist).

Daniel Böhmer
quelle
3
Möglicherweise möchten Sie einige Dateien erzwingen, die danach erforderlich sind. z.B. die .htaccess-Datei. Natürlich basierend auf Ihren Anforderungen.
Dakdad
3
@ Dakdad: Danke für den Vorschlag. Die Antwort wurde verbessert. Wenn Poe einige spezielle Dateien hat, wie sie .htaccessbereits eingecheckt sind, werden sie weiterhin verfolgt. gitignoreist nur für neue Dateien wichtig.
Daniel Böhmer
@ DanielBöhmer Vielleicht kommt das vom Thema ab, aber gibt es einen Grund, nur /.gitignoreund nicht jede .gitignoreDatei zu ignorieren, unabhängig davon, wo sie sich befindet? Dh warum nicht auflisten !.gitignore(kein Schrägstrich)?
Jason Young
1
@ JasonYoung Interessante Frage. Nun, dieses Muster ignoriert nur die Datei selbst. Ich finde das prägnanter ohne Nebenwirkungen für ein Beispiel zum Kopieren und Einfügen. Natürlich können Sie wahrscheinlich alle .gitignoreDateien in Ihrer Top-Level- .gitignoreDatei einfach ignorieren . Aber diese Wahl liegt bei Ihnen.
Daniel Böhmer
64

.gitignore wirkt sich nur auf Dateien aus, die noch nicht 'hinzugefügt' wurden.

Das Erstellen neuer .gitignore-Einträge wirkt sich auf alle Dateien aus

  1. Nehmen Sie Änderungen an .gitignore vor
  2. git commit -a -m "Pre .gitignore changes"
  3. git rm -r --cached .
  4. git add .
  5. git commit -a -m "Post .gitignore changes"
  6. git status sollte "nichts zu festschreiben (Arbeitsverzeichnis sauber)" `ausgeben
Nat Darke
quelle
Die Zeile "wurde noch nicht hinzugefügt" ist hier der Schlüssel, denn wenn Sie eine bestimmte Datei bereits festgeschrieben haben, funktioniert das Ignorieren bei ihm nicht mehr. Sie müssen sie aus dem Repository löschen und beim nächsten Erstellen den .gitignore werde es ignorieren.
Georgi Peev
21

In .git/info/exclude, fügen Sie diese Zeile:

.*

Dadurch wird das rekursive Ignorieren aller versteckten / Punktdateien zum Standard für jedes Repository auf dem Computer. Eine separate .gitignoreDatei für jedes Repo wird auf diese Weise nicht benötigt.

Slayedbylucifer
quelle