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

11voto

Reikken Punkte 141

Eine Menge komplexer Antworten hier... hier ist etwas ziemlich einfach, dass ich nicht oben sehen und funktioniert gut in vielen Szenarien:

# ignore all files that have an extension
**/*.*

# except for these extensions
!**/*.extension1
!**/*.extension2

Dies ignoriert keine Dateien ohne Erweiterung, aber wenn Sie eine Reihe von Dateien mit demselben oder einem ähnlichen Namen haben, können Sie Ausnahmen für diese Dateien hinzufügen

**/EXTENSIONLESSFILETOIGNORE

0 Stimmen

Das ist genau das, wonach ich gesucht habe, und es hat hervorragend funktioniert. Ich wollte Dateien mit nur einer Erweiterung einschließen und alles andere in einem Unterpfad innerhalb eines bestimmten Verzeichnisses ignorieren.

9voto

Dmitry Sokurenko Punkte 5647

Das ist, was für mich gearbeitet haben, wollte ich nur ein Cordova-Plugin auf die Repo zu übertragen:

...
plugins/*
!plugins/cordova-plugin-app-customization

8voto

KeyC0de Punkte 4087

Der einfachste Weg, dies zu tun, ist das erzwungene Hinzufügen einer Datei. Sie wird in Git berücksichtigt, auch wenn sie in einem von Git ignorierten Unterverzeichnisbaum vergraben oder verschachtelt ist.

Zum Beispiel:

x64-Ordner ist in .gitignore ausgeschlossen:

x64/

Sie wollen aber die Datei myFile.py gelegen in x64/Release/ Verzeichnis. Dann müssen Sie das tun:

git add -f x64/Release/myFile.py

Sie können dies für mehrere Dateien tun, die einem Muster entsprechen, z. B.

git add -f x64/Release/myFile*.py

und so weiter.

8voto

Mario Legenda Punkte 719

Ich habe Jquery und Angular von Bower. Bower installiert sie in

/public_html/bower_components/jquery/dist/bunch-of-jquery-files
/public_html/bower_components/jquery/src/bunch-of-jquery-source-files
/public_html/bower_components/angular/angular-files

Das minimierte Jquery befindet sich innerhalb der dist und Angular befindet sich im Verzeichnis angular Verzeichnis. Ich brauchte nur minimierte Dateien, um sie nach Github zu übertragen. Einige Manipulationen mit .gitignore und das ist, was ich geschafft zu zaubern...

/public_html/bower_components/jquery/*
!public_html/bower_components/jquery/dist
/public_html/bower_components/jquery/dist/*
!public_html/bower_components/jquery/dist/jquery.min.js
/public_html/bower_components/angular/*
!public_html/bower_components/angular/angular.min.js

Ich hoffe, dass dies jemandem nützlich sein könnte.

7voto

d.raev Punkte 8510

Einfache Lösung, wenn Sie alles außer einigen Dateien und einigen wenigen Dateien ignorieren müssen Wurzel Mappen:

/*
!.gitignore
!showMe.txt
!my_visible_dir

Die Magie liegt in /* (wie oben beschrieben) wird alles im (Stamm-)Ordner ignoriert, ABER NICHT rekursiv.

0 Stimmen

Hochgestimmt: damit das Verzeichnis hinzugefügt wird, !directory/* funktionierte nicht wie viele frühere Beispiele. Es musste sein !directory ohne den Schrägstrich oder * am Ende.

0 Stimmen

@FrankForte sehen Sie die letzte Zeile meines Beispiels, inwiefern steht dies im Widerspruch zu dem, was Sie gesagt haben?

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