Si coloco una carpeta que es un repositorio git, ¿puedo hacerlo sin incluir los .gitarchivos relacionados? Si no es así, ¿cómo podría hacerlo mediante un comando?
16
Echa un vistazo primero git help archive. archivees 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_NAMESi 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
.gitpero 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
gitcompila en cualquier sistema dondetarno está disponible? :-)tarno tiene--excludeopción, como OpenBSD (que ciertamente duplica lasopció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
.gitcarpetas 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
-print0parafindy--nullparatarsi se admiten).fuente