Если я заархивирую папку, которая является git-репозиторием, могу ли я сделать это без включения .git
соответствующих файлов? Если нет, как бы я поступил так с помощью команды?
16
Посмотрите сначала на git help archive
. archive
команда git, позволяющая создавать архивы, содержащие только файлы, отслеживаемые git Вероятно, то, что вы ищете. Один пример приведен в конце справочной страницы:
git archive --format=tar --prefix=git-1.4.0/ v1.4.0 | gzip >git-1.4.0.tar.gz
Самый простой ответ: Добавить
--exclude-vcs
--exclude-VCS
Это исключает все каталоги системы контроля версий
Лично я пользуюсь
так что все, что вам нужно сделать, это добавить --exclude-vcs в конце команды.
источник
tar --exclude-vcs -zcvf foo.tar.gz ./FOLDER_NAME
Если вы хотите, чтобы в архив входили файлы, отслеживаемые git, но не сам git-репозиторий или любой сгенерированный или иным образом неотслеживаемый файл, используйте
git archive
.Если вы специально хотите исключить,
.git
но включить все остальное, в Linux, FreeBSD, OSX или Cygwin, у tar есть простая опция для исключения каталога:С GNU tar (то есть под Linux или Cygwin) вы можете сократить это до
tar czf foo.tgz --exclude .git foo
.POSIX способ создания архивов есть
pax
.источник
git
Компилируется ли в какой-либо системе, гдеtar
это не доступно? :-)tar
нет--exclude
опций, таких как OpenBSD (который, по общему признанию, дублируетs
опцию pax , но это не общее расширение синтаксиса команды tar).Благодаря ответу на один из моих вопросов я нашел другое решение. Итак, для полноты картины, вот решение, использующее
find
:И если вы хотите исключить возможные
.git
папки внутри (sub) + folder:Последнее также может быть достигнуто через:
Очень удобно, если вы можете использовать другие методы фильтрации
find
, например, дату модификации, разрешения, ...(Как часто предполагается, правильно сформированные имена файлов, в противном случае вам нужно использовать нулевые байты в качестве разделителей, которые могут означать
-print0
дляfind
и--null
для,tar
если поддерживается).источник