git - 在本地打包一个尊重 .gitignore 的 git 存储库
问题描述
我在本地有一个 git repo,它在 .gitignore 中有一堆文件(例如 node_modules)。我想通过电子邮件将此 repo 作为 zip 附件发送给朋友。有没有办法创建一个尊重 .gitignore 的 git 包?我知道我可以复制一个文件夹并手动删除所有不需要的文件,但有没有更简单的方法?就像 npmnpm pack
一样,它会在本地创建一个 tarball,看起来就像要发布它一样(即尊重 .npmignore)。git有等价物吗?谢谢。
编辑:
为了澄清,我希望结果与我推送到远程仓库并且有人拉它一样。git archive
创建 repo 删除.git
文件的快照。似乎我想要的是git clone src_repo dest_repo
,这将克隆我的本地存储库,同时考虑到.gitignore
解决方案
您可以创建一个 Git 捆绑文件,git bundle create
其中包含您要包含的一个或多个分支。如果要包括所有分支,可以使用git bundle create --all
.
然后你的朋友可以通过运行从它克隆git clone BUNDLE-FILE DIRECTORY
,这将在目录中创建一个新的存储库。类似地,它可以用作远程,只需指定文件名而不是普通的远程名称或 URL 即可从中提取。
这是通过文件传输 Git 存储库的首选方式。您通常不希望传输包括.git
目录在内的完整存储库,因为 Git 假定诸如钩子和配置之类的内容不会受到其他用户的修改,因此压缩克隆不是传输存储库的安全方法。
您不需要压缩生成的文件,因为 Git 已经压缩了数据。如果你这样做,如果你禁用压缩它会快得多。
推荐阅读
- ruby-on-rails - 使用 Ruby on Rails 处理文本搜索中的特殊字符
- node.js - MongoDB / Mongoose - 数组内的文本搜索
- html - 断词 CSS 属性不适用于输入标签 - 值属性
- javascript - LightningChart JS - 对数轴
- protobuf-net - 用于方法和主类的多个子类的 protobuf-net 装饰器
- python - 任何人都知道解决此列表问题场景的更简单方法吗?
- python - 在测试子类时使用python的模拟补丁来模拟父类属性的值(通过调用导入的模块设置)
- c - 如何在 C 中重复 20 次后停止 for 循环
- python - Hbase shell 得到这个错误:fstat unimplemented unsupported or native support failed to load
- firebase - Gcloud auth 干扰 Firebase 凭据