2622 Stimmen

.gitignore ignoriert alles außer ein paar Dateien

Ich weiß, dass eine .gitignore-Datei bestimmte Dateien vor der Git-Version verbirgt Kontrolle. Ich habe ein Projekt (LaTeX), das viele zusätzliche Dateien erzeugt (.auth, .dvi, .pdf, Protokolle usw.) erzeugt, aber ich möchte nicht, dass diese nachverfolgt werden.

Ich bin mir bewusst, dass ich dafür sorgen könnte (oder sollte), dass all diese Dateien in einer separaten Unterordner im Projekt ablegen könnte, da ich den Ordner dann einfach ignorieren könnte.

Gibt es jedoch eine praktikable Möglichkeit, die Ausgabedateien in der Wurzel des Projektbaums zu halten und .gitignore zu verwenden, um alles zu ignorieren, außer den Dateien mit Git verfolge? Etwas wie

# Ignore everything
*

# But not these files...
script.pl
template.latex
# etc...

20 Stimmen

Duplikat von stackoverflow.com/q/9162919/321973 (Ich weiß, dass das neuer ist, aber die Antwort dort ist richtiger). Eigentlich diese Antwort ist wahrscheinlich die beste

1voto

Will Punkte 5823

Gist

# Ignore everything
*

# But not these files...
!script.pl
!template.latex

Und wahrscheinlich gehören dazu:

!.gitignore

Referenz

Von https://git-scm.com/docs/gitignore :

Eine optionale Vorsilbe " ! "was das Muster negiert; jede passende Datei, die durch ein vorheriges Muster ausgeschlossen wurde, wird wieder eingeschlossen. Es ist nicht möglich, eine Datei wieder einzuschließen, wenn ein übergeordnetes Verzeichnis dieser Datei ausgeschlossen ist. Git listet aus Leistungsgründen keine ausgeschlossenen Verzeichnisse auf, so dass alle Muster für enthaltene Dateien keine Wirkung haben, egal wo sie definiert sind. Setzen Sie einen Backslash (" \ ") vor dem ersten " ! " für Muster, die mit einem wörtlichen " beginnen ! ", zum Beispiel, " \!important!.txt ".

...

Beispiel für den Ausschluss von allem außer einem bestimmten Verzeichnis foo/bar (Beachten Sie die /* - ohne den Schrägstrich, würde der Platzhalter auch alles ausschließen, was innerhalb von foo/bar ):

$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar

0voto

SymboLinker Punkte 435

Über github.com/gitinclude Sie können ein Kommandozeilentool (für Windows, Linux und OSX) herunterladen, um tief verschachtelte Dateimengen einzuschließen.

Definieren Sie die Dateisets in einer .gitinclude und führen Sie das Tool aus (per Doppelklick oder Befehlszeile). Ihr .gitignore ist jetzt aktualisiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X