Kann ich einen Ordner tarieren, der ein Git-Repository ist, ohne die .git
zugehörigen Dateien einzuschließen? Wenn nicht, wie würde ich das über einen Befehl tun?
16
Schauen Sie sich zuerst an git help archive
. archive
ist ein Git-Befehl, mit dem Archive erstellt werden können, die nur mit Git verfolgte Dateien enthalten. Wahrscheinlich, wonach Sie suchen. Ein Beispiel am Ende der Manpage:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Einfachste Antwort: Hinzufügen
--exclude-vcs
--exclude-vcs
Dies schließt alle Verzeichnisse des Versionskontrollsystems aus
Ich persönlich benutze
Alles, was Sie tun müssen, ist --exclude-vcs am Ende des Befehls hinzuzufügen.
quelle
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Wenn das Archiv die von git verfolgten Dateien enthalten soll, jedoch nicht das git-Repository selbst oder eine generierte oder auf andere Weise nicht verfolgte Datei, verwenden Sie
git archive
.Wenn Sie
.git
unter Linux oder FreeBSD oder OSX oder Cygwin ausdrücklich einschließen , aber alles andere einschließen möchten, bietet tar eine einfache Möglichkeit, ein Verzeichnis auszuschließen:Mit GNU tar (zB unter Linux oder Cygwin) können Sie dies auf kürzen
tar czf foo.tgz --exclude .git foo
.Die POSIX-Methode zum Erstellen von Archiven lautet
pax
.quelle
git
compiliert auf jedem System , in demtar
nicht verfügbar ist? :-)tar
es keine--exclude
Option gibt, wie zum Beispiel OpenBSD (das zwar dies
Option von pax dupliziert , dies ist jedoch keine übliche Syntaxerweiterung für tar-Befehle).Dank einer Antwort auf eine meiner Fragen fand ich eine andere Lösung. Der Vollständigkeit halber hier eine Lösung, die Folgendes nutzt
find
:Und wenn Sie mögliche
.git
Ordner innerhalb (Unter-) + Ordners ausschließen möchten :Letzteres kann auch erreicht werden durch:
Sehr praktisch, wenn Sie andere Filtertechniken verwenden können
find
, z. B. Änderungsdatum, Berechtigungen usw.(Da so oft wohlgeformte Dateinamen vorausgesetzt werden, müssen Sie ansonsten Null-Bytes als Trennzeichen verwenden, was
-print0
fürfind
und--null
für bedeuten kann,tar
wenn dies unterstützt wird.)quelle