git archive 打包时怎么排除 node_modules?

码农新艳 阅读 2

我用 git archive 打了个压缩包,结果发现把 node_modules 也打包进去了,明明它在 .gitignore 里啊?是不是 archive 不读 .gitignore?

我试过直接运行:

git archive --format=zip --output=release.zip main

但生成的 zip 里还是有 node_modules,这不应该吧?难道得手动加排除参数?

我来解答 赞 2 收藏
二维码
手机扫码查看
1 条解答
Mc.名哲
Mc.名哲 Lv1
确实,git archive 默认不会读取 .gitignore,这坑我也踩过。官方文档里说得很清楚,archive 命令只跟踪版本控制的文件,而 .gitignore 是 git 自己的机制。

解决方法是加个 --exclude 参数:
git archive --format=zip --output=release.zip --exclude='node_modules/*' main


如果你想排除多个目录,可以这样:
git archive --format=zip --output=release.zip --exclude='node_modules/*' --exclude='.DS_Store' main


顺便吐槽下,git 这个设计真的有点反直觉,我第一次用的时候也以为它会自动忽略 .gitignore 里的内容...
点赞
2026-03-08 14:00