Respuestas:
Echa un vistazo primero git help archive
. archive
es un comando git que permite crear archivos que contienen solo archivos con seguimiento git. Probablemente lo que estás buscando. Un ejemplo listado al final de la página del manual:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Respuesta más simple: Agregar --exclude-vcs
--exclude-vcs
Esto excluye todos los directorios del sistema de control de versiones.
Personalmente uso
tar -zcvf foo.tar.gz ./FOLDER_NAME --exclude-vcs
así que todo lo que necesita hacer es agregar --exclude-vcs al final del comando.
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Si desea que el archivo incluya los archivos rastreados por git, pero no el repositorio git en sí mismo o cualquier archivo generado o no rastreado, usegit archive
.
Si desea excluir específicamente .git
pero incluir todo lo demás, en Linux o FreeBSD o OSX o Cygwin, tar tiene una opción simple para excluir un directorio:
tar -c --exclude .git -f - foo | gzip >foo.tgz
Con GNU tar (es decir, bajo Linux o Cygwin), puede acortar esto a tar czf foo.tgz --exclude .git foo
.
La forma POSIX de crear archivos es pax
.
pax -w -t -s '!.*/\.git$!!' -s '!.*/\.git/.*!!' foo | gzip >foo.tgz
git
compila en cualquier sistema donde tar
no está disponible? :-)
tar
no tiene --exclude
opción, como OpenBSD (que ciertamente duplica la s
opción de pax , pero esa no es una extensión de sintaxis de comando tar común).
Gracias a una respuesta que obtuve en una de mis preguntas , descubrí otra solución. Entonces, para completar, aquí hay una solución que utiliza find
:
find . -path './.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Y si desea excluir posibles .git
carpetas dentro de (sub) + carpeta:
find . -path '*/.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Este último también se puede lograr a través de:
find . -type d -name '.git' -prune -o -print |
tar -czvf ../archive.tgz --no-recursion -T -
Muy útil si puede utilizar otras técnicas de filtrado de find
, por ejemplo, fecha de modificación, permisos, ...
(Como a menudo se suponen nombres de archivo bien formados, de lo contrario, debe usar bytes nulos como separadores que pueden significar -print0
para find
y --null
para tar
si se admiten).