Git: Wie ignorieren/Dateien angeben für *checkout*
Wenn ich nicht will .html-Dateien aufgespürt, die ich hinzufügen können, die Muster zu .gitignore und Sie werden ignoriert. Ich würde gerne wissen, wie ich tun kann, das converse - an der Kasse, wie könnte ich Fragen, git nur Kasse bestimmte Arten von Dateien nicht oder Kasse bestimmte Typen von Dateien?
Zum Beispiel, wenn ich nicht möchte, html-Dateien, die ich schreiben könnte:
git checkout HEAD . --no .html
wenn die es gab 🙂 gibt es eine Möglichkeit bereits integriert, oder muss ich nur laufen müssen etwas anderes post-Kasse?
Jede Hilfe wird sehr geschätzt.
InformationsquelleAutor der Frage iain | 2011-03-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um die Paket-Dateien für die Bereitstellung, die Sie wahrscheinlich nicht brauchen - oder wollen - die repo selbst. Das ist genau das, was
git archive
ist. Ein paar Beispiele aus der manpage (verlinkt):Sollten Sie in der Lage sein, um es zu bekommen, genau das zu tun, was Sie wollen, mit Hilfe der
export-ignore
Attribut:Beispielsweise, um auszuschließen das Verzeichnis
private
und die Dateienmine.txt
undsecret.c
könnten Sie in der Datei.gitattributes
:Genau wie gitignore-Dateien, können Sie diese überall in Ihrem repository haben, und Sie betreiben Sie aus diesem Verzeichnis, aber beginnend von der obersten Ebene ist eine gute Wette.
InformationsquelleAutor der Antwort Cascabel
Git ' s Sparse-Checkout
Wenn Sie nur wollen, um die Kasse einen Teil Ihres Projektarchivs ist, können Sie git verwenden, die sparse-checkout-option, die hat mächtig include/exclude-Regeln.
Den folgenden StackOverflow-Frage hat einige hilfreiche Hinweise:
GIT checkout-außer einem Ordner
Aber als Zusammenfassung:
Aktivieren Sie die
sparseCheckout
option:Erstellen der Datei namens
.git/info/sparse-checkout
mit:was effektiv bedeutet, enthalten alles, außer den
node_modules
- Verzeichnis, wenn Sie das Auschecken eines Repositorys in das Arbeitsverzeichnis.InformationsquelleAutor der Antwort Simon East
Also wollte ich versende meine code ohne test-Dateien auf den Produktionsserver.
Einfachste Weg für mich war nur entfernen Sie alle Dateien testen mit:
rsync --exclude 'tests'
nach dem Auspacken des Archivs.InformationsquelleAutor der Antwort Kristian
Einfach nicht, fügen Sie Sie zur Quellcodeverwaltung? Der Punkt von git ist, so hat jeder die ganzen repo-lokal....
InformationsquelleAutor der Antwort Justin Thomas
Können nicht abgerufen werden Teil eines einzelnen commit in Git. Entweder zieht man eine commit-oder Sie tun es nicht - es gibt keine halben Schritt.
Dies bedeutet, dass, wenn es einen commit fügt hinzu, dass eine Reihe von Dateien, dann können Sie alle diese Dateien (durch ziehen der commit in das lokale repo) oder keine von Ihnen (nicht durch ziehen, commit).
Du kann wählen, der vorsieht, Sie wollen mit
git cherry-pick
aber ich vermute, es wird nicht viel helfen in diesem Fall.In der Regel eine Datei sollte entweder in der version Kontrolle oder nicht - ich kann nicht einen Grund denken, warum Sie wollen würde, eine Datei in Git nur manchmal. Wenn es etwas in Ihr .gitignore dann ist es wahrscheinlich ein guter Kandidat für die Entfernung aus dem repository zusammen. .gitignore im Grunde bedeutet "schauen Sie nicht bei dieser Datei, es ist nicht unter Versionskontrolle".
(Wenn Sie nichts dagegen haben, umschreiben Ihre repository-Historie könnte man cherry-pick hinzufügen Begehen, dann tun Sie ein
git reset --mixed HEAD^1
und neue begeht, lassen sich die Dateien, die Sie nicht wollen...aber dies nicht tun, es sei denn, Sie wirklich wissen, was Sie tun. Besser, nur die Dateien entfernen, und schieben Sie einen neuen verpflichten, die Aufzeichnungen der Entfernung.)EDIT: Gerade gesehen, Ihr Kommentar über den Wunsch, bestimmte Teile für einen Einsatz. In diesem Fall würde ich vorschlagen, dass du das erstellen einer deployment-Zweig, der entfernt die relevanten Dateien. Sie können rebase dieser Zweig von der Hauptstrecke, wenn Sie müssen und es sollte magisch entfernen Sie die Dateien, die Sie jedes mal.
InformationsquelleAutor der Antwort Cameron Skinner