我正在尝试从文件夹创建一个 zip 文件,我想.git
从生成的 zip 文件中排除子文件夹。
我已经转到我要压缩的文件夹(称为 bitvolution)的父文件夹,我正在执行以下操作:
zip -r bitvolution.zip bitvolution -x ".git"
Run Code Online (Sandbox Code Playgroud)
但它不排除.git
子文件夹。
我尝试了各种组合,-x .git*
, -x \.git/*
, -x .git/\*
, -x \.git/\*
。我也试过使用排除参数的完整路径......但只是没有到达那里。
Isa*_*iah 334
正确的表达式是-x '*.git*'
,所以完整的命令应该是:
zip -r bitvolution.zip ./bitvolution -x '*.git*'
Run Code Online (Sandbox Code Playgroud)
来自http://selfsolved.com/problems/zip-command-exclude-svn-director的解释:
正确的咒语是
Run Code Online (Sandbox Code Playgroud)zip -9 -r --exclude=*.svn* foo.zip [directory-to-compress]
您还可以添加一个
--exclude=*.DS_Store*
以排除烦人的 Mac OS X 目录显示元数据文件。请注意,传递给的表达式
--exclude
使用整个原始相对目录路径作为要匹配的原始字符串。所以.svn/*
它本身是行不通的;前面的通配符确保它匹配.svn
目录树中任何位置的目录。
Bla*_*air 174
如果您尝试压缩存储在 Git 中的项目,请使用该git archive
命令。从源目录中:
git archive -o bitvolution.zip HEAD
Run Code Online (Sandbox Code Playgroud)
您可以使用任何提交或标记 ID,而不是HEAD
在某个时间点存档项目。
如果要为每个文件添加前缀(例如,顶级文件夹):
git archive -o bitvolution.zip --prefix=bitvolution/ HEAD
Run Code Online (Sandbox Code Playgroud)
您还可以在 0(无压缩)和 9(最大压缩)之间调整压缩级别,例如
git archive -o bitvolution.zip -9 HEAD
Run Code Online (Sandbox Code Playgroud)
有关其他选项,请参阅帮助页面 ( git help archive
)。
小智 34
我添加了反斜杠:
zip -r bitvolution.zip bitvolution -x \*.git\*
Run Code Online (Sandbox Code Playgroud)
关于反斜杠的手册页:
反斜杠避免了 shell 文件名替换,因此名称匹配由 zip 在所有目录级别执行。
小智 13
假设您在执行此操作的机器上安装了 git,您还可以使用 git 本身来创建您的存档。
git archive --format=zip HEAD -o bitvolution.zip
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您使用的是 zsh,命令应如下所示:
zip -r target_name.zip source_dir -x '/*.git/*'
Run Code Online (Sandbox Code Playgroud)
如果您使用:zip -r target_name.zip source_dir -x /*.git/*
。如果没有 'regex',zsh 将在 zip 运行之前进行处理。您将收到错误消息:
zsh: no matches found: /*.git/*
Run Code Online (Sandbox Code Playgroud)
小智 6
如果您想忽略整个文件夹,请使用以下格式。
例如,要忽略每个node_modules
端点中的每个文件夹:
zip -r API.zip API/* -x */node_modules/*
Run Code Online (Sandbox Code Playgroud)
小智 6
以下是我用来删除在 MacOS 和构建文件夹上找到的 .git 文件夹和 .DS_Store 文件的示例:
zip -r workspace.zip workspace -x '*/.git/*' -x '*/.DS_Store' -x '*/build/*'
Run Code Online (Sandbox Code Playgroud)