2014-12-11 20 views
6

Ich bin ein Mitarbeiter für ein Repository, das gelegentlich Bilder gepostet hat. Die Bilder sind wirklich nicht wesentlich, aber die anderen Mitwirkenden werden zu add und push zum Repository fortfahren. Ich möchte pull Operationen durchführen, die Bilddateisuffixe wie *.png ignorieren. Das Git-Verzeichnis nimmt nur zu viel Platz in Anspruch, und ich muss diese Bilddateien wirklich nicht ziehen.Git ziehen Bilddateien ignorieren

Wie kann ich nicht pull die Bilddateien, aber erhalten alles sonst?

+0

Das ist nicht möglich. Vielleicht können die Bilddateien in ein separates Repository extrahiert werden (das möglicherweise über ein Submodul zur Verfügung gestellt wird), von dem Sie auswählen können, dass Sie es nicht abrufen möchten. –

Antwort

5

Sie können sparse-checkout verwenden, um Ihr Arbeitsverzeichnis sparsam zu füllen. sparse-checkout verwendet das Bit skip-worktree, das git davon ausgeht, dass die Datei in Ihrem Arbeitsbaum auf dem neuesten Stand ist, egal was passiert.


Für die folgend Ich nehme an, dass Sie sich in der Wurzel Ihres Repository sind und einen sauberen Arbeitsbaum (git stash zum Beispiel).

Zuerst müssen Sie sparse-checkout mit git config core.sparsecheckout true aktivieren; Danach können Sie alle Muster definieren, die Sie beim Auschecken in .git/info/sparse-checkout "ignorieren" möchten.
Die Syntax ist die gleiche wie in einer .gitignore Datei, mit dem Unterschied, dass Sie alle Dateien definieren, die Sie wollen zur Kasse nicht diejenigen, die Sie ignorieren möchten.

Nehmen wir an, Sie alle png Dateien im Repository auschecken vermeiden wollen, dann sparse-checkout Datei könnte wie folgt aussehen:

*   # Include everything 
!*.png # Flag png files with the 'skip-worktree' bit 

Wenn Sie die sparse-checkout zu Ihrem aktuellen Arbeitsverzeichnis anwenden möchten Sie müssen Führen Sie danach einen read-tree Befehl aus.

Danach können Sie wie gewohnt mit Ihrem Repository arbeiten, ohne die "ignorierten" Dateien in Ihrem Arbeitsbaum.


TL; DR:

  • aktivieren sparse-checkout: git config core.sparsecheckout true
  • definieren sparse-checkout Datei unter .git/info/ die Muster der Dateien enthält, die Sie wollen
  • Aktualisieren der Arbeitsbaum enthalten git read-tree -m -u HEAD

Sie können mehr über sparse-checkout in der offiziellen Dokumentation von git read-tree lesen.

+0

Ich werde es versuchen. Danke für den Tipp! –