.git
子文件夹。压缩(称为bitvolution),然后我在做:zip -r bitvolution.zip bitvolution -x ".git"
,但这并不排除
.git
子文件夹。已经尝试了各种组合,-x .git*
,-x \.git/*
,-x .git/\*
,-x \.git/\*
。我还尝试将完整路径用于exclude参数...但是只是没有到达那里。#1 楼
正确的表达式是-x '*.git*'
,因此完整命令应为:zip -r bitvolution.zip ./bitvolution -x '*.git*'
来自http://selfsolved.com/problems/zip-command-exclude-svn的解释-director:
正确的说法是
zip -9 -r --exclude=*.svn* foo.zip [directory-to-compress]
您还可以添加
--exclude=*.DS_Store*
以排除烦人的Mac OS X目录显示元数据文件。请注意,传递给
--exclude
的表达式使用整个原始相对目录路径作为要匹配的原始字符串。因此,.svn/*
本身不起作用;前面的通配符确保其与目录树中任何位置的.svn
目录匹配。评论
我必须将全引号括在引号中或使用反斜杠转义星号,例如zip --exclude'* .git *'-r directory.zip目录或zip --exclude \ *。git \ * -r directory.zip目录
–德米特里·明科夫斯基(Dmitry Minkovsky)
2014年5月29日19:37
如果您担心丢失其他名为something.git的文件,也可以使用--exclude /.git*。
– Erin电话
2014-09-25 21:54
在ZSH中,我必须添加一个反斜杠:-x \ *。git \ *
–德米特里·桑达洛夫(DmitrySandalov)
2014年12月6日20:14
我对zsh中反斜杠和引号的首选替代方法:noglob zip -r out.zip someFolder -x * someExcludedFolder *
–塞巴斯蒂安
15-10-19在14:09
其中大多数似乎也将忽略您的.gitignore文件。我建议改用'* /。git / *',因为它不太宽松,或者是其他人提到的git归档方法。
–dsz
19年2月8日在4:02
#2 楼
如果要压缩存储在Git中的项目,请使用git archive
命令。在源目录中:git archive -o bitvolution.zip HEAD
可以使用任何提交或标记ID代替
HEAD
来在某个点存档项目。 >如果要在每个文件中添加前缀(例如,顶级文件夹):git archive -o bitvolution.zip --prefix=bitvolution/ HEAD
您还可以将压缩级别调整为0(无压缩)和9(包括最大压缩),例如
git archive -o bitvolution.zip -9 HEAD
有关其他选项,请参见帮助页面(
git help archive
)。评论
这不仅不包括git文件夹,而且gitignore文件中的任何内容也将被排除。先生,您得到赞成票。
–JoeMoe1984
14-10-21在10:04
正是我想要做的!
– Bjarte
17-10-21在11:41
我参加聚会很晚,但这绝对让我震惊。好答案!
–汤姆
17-10-25在10:14
我不知道为什么这不是最好的答案
–nabtron
18年6月7日在1:52
对我来说,这是今天最大的TIL ...
–肖恩·西科里亚(Shawn Cicoria)
18年7月8日在17:12
#3 楼
我添加了反斜杠:zip -r bitvolution.zip bitvolution -x \*.git\*
关于反斜杠的手册页:
反斜杠避免了shell文件名的替换,因此名称
匹配由zip在所有目录级别执行。
评论
在Ubuntu 14.04上为我加上带斜线叉的星号以排除目录
– Dimitry K
16 Mar 23 '16 at 17:04
#4 楼
假设正在执行此操作的计算机上已安装git,则还可以使用git本身创建存档。git archive --format=zip HEAD -o bitvolution.zip
#5 楼
如果使用zsh,则命令应类似于:zip -r target_name.zip source_dir -x '/*.git/*'
如果使用:
zip -r target_name.zip source_dir -x /*.git/*
。而没有'regex',则zsh将在运行zip之前处理。您将收到错误消息:
zsh: no matches found: /*.git/*
评论
谢谢!这就是我在Windows上的Ubuntu上使用Bash的工作方式。
–阿德里亚诺·蒙尼奇(Adriano Monecchi)
18年8月30日在11:48
我不了解这种模式是如何工作的,但是在zsh为我工作。
–签名
19-2-25在11:51
#6 楼
如果要忽略整个文件夹,请使用以下格式。例如,要忽略每个端点中的每个node_modules
文件夹:zip -r API.zip API/* -x */node_modules/*
#7 楼
这是我使用的示例:zip -r workspace.zip workspace -x '*/.git/*' -x '*/.DS_Store/*' -x '*/build/*'
评论
-x“ .git *”为我工作。