Si coloco una carpeta que es un repositorio git, ¿puedo hacerlo sin incluir los .git
archivos relacionados? Si no es así, ¿cómo podría hacerlo mediante un comando?
16
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
así que todo lo que necesita hacer es agregar --exclude-vcs al final del comando.
fuente
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, use
git 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: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
.fuente
git
compila en cualquier sistema dondetar
no está disponible? :-)tar
no tiene--exclude
opción, como OpenBSD (que ciertamente duplica las
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
:Y si desea excluir posibles
.git
carpetas dentro de (sub) + carpeta:Este último también se puede lograr a través de:
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
parafind
y--null
paratar
si se admiten).fuente