Se eu tar uma pasta que é um repositório git, posso fazê-lo sem incluir os .git
arquivos relacionados? Se não, como eu faria isso através de um comando?
16
Dê uma olhada primeiro git help archive
. archive
é um comando git que permite criar arquivos contendo apenas arquivos rastreados pelo git. Provavelmente o que você está procurando. Um exemplo listado no final da página do manual:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Resposta mais simples: adicionar
--exclude-vcs
--exclude-vcs
Isso exclui todos os diretórios do sistema de controle de versão
Pessoalmente eu uso
então tudo que você precisa fazer é adicionar o --exclude-vcs no final do comando.
fonte
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Se você deseja que o archive inclua os arquivos rastreados pelo git, mas não o próprio repositório git ou qualquer arquivo gerado ou não rastreado, use
git archive
.Se você deseja excluir especificamente,
.git
mas inclui todo o resto, no Linux ou FreeBSD ou OSX ou Cygwin, o tar possui uma opção simples para excluir um diretório:Com o GNU tar (ou seja, no Linux ou Cygwin), você pode reduzi-lo para
tar czf foo.tgz --exclude .git foo
.A maneira POSIX de criar arquivos é
pax
.fonte
git
compila em qualquer sistema ondetar
não está disponível? :-)tar
não há--exclude
opção, como o OpenBSD (que duplica as
opção do pax , mas essa não é uma extensão comum da sintaxe do comando tar).Graças a uma resposta que recebi em uma das minhas perguntas , descobri outra solução. Portanto, por uma questão de integridade, aqui está uma solução que utiliza
find
:E se você deseja excluir possíveis
.git
pastas dentro da (sub) + pasta:O último também pode ser alcançado através de:
Bastante útil se você puder fazer uso de outras técnicas de filtragem de
find
, por exemplo, data de modificação, permissões,…(Como geralmente são assumidos nomes de arquivo bem-formados, caso contrário, você precisa usar bytes nulos como separadores, o que pode significar
-print0
parafind
e--null
paratar
se houver suporte.)fonte