运行git存档时忽略.gitignore
我有一个git repo,其中包含一堆源代码,编译后会生成一堆二进制文件。二进制文件都列在相应的.gitignore文件中,不包括在repo中 但是,我想发布一个repo的source+binaries快照zipfile,其中包含所有二进制文件,但不包括.git/目录之类的内容 创建快照zipfile的自然方法似乎是运行git存档时忽略.gitignore,git,Git,我有一个git repo,其中包含一堆源代码,编译后会生成一堆二进制文件。二进制文件都列在相应的.gitignore文件中,不包括在repo中 但是,我想发布一个repo的source+binaries快照zipfile,其中包含所有二进制文件,但不包括.git/目录之类的内容 创建快照zipfile的自然方法似乎是 git archive -o archive.zip 但这不包括.gitignore中的任何二进制文件 关于如何使用git archive实现这一点的想法?(我的解决办法是手动
git archive -o archive.zip
但这不包括.gitignore中的任何二进制文件
关于如何使用git archive实现这一点的想法?(我的解决办法是手动创建一个包含除.git/目录以外的所有内容的zip存档)我认为您无法使用“git存档”实现您希望实现的目标。”git archive在提交时起作用,您的二进制文件根本不可见。注意“git archive”是以提交为中心的,因此您可以在没有明确存在源代码受控文件的裸存储库中直接使用git archive。因为,这不是git archive可以完成的任务 为正确的任务使用正确的工具。我也做了类似的事情,并且有一个Perl脚本来创建包含源代码和编译内容的归档文件 简单地压缩编译期间创建的所有内容可能不是您想要的:
- 如果您想将库交给某人,他只会对库和一些标题感兴趣,以便能够使用库。例如,不需要归档对象文件和其他中间文件
- 如果您希望您的读者能够自己构建库,请包括源代码、所需的项目文件以及预构建的二进制文件
您可以使用.gittributes文件从
git归档文件中排除文件和/或目录
在项目根目录中创建名为.gittributes的文件(如果不存在)
编辑文件:每个排除应具有一个文件模式,后跟“导出忽略”:
确保忽略.gittributes文件本身
请确保提交.gittributes文件,否则git archive
将无法获取设置
然后可以随意使用您的git archive-o archive.zip命令或变体
如果从版本控制中忽略文件(通过.gitignore
),则无法将其包含在git存档中
在我的变通方法中,我会在之后附加所需的文件
git archive --format=tar -o repo.tar HEAD
tar --append --file=repo.tar thirdparty/binary
gzip repo.tar
请注意,附加到tar.gz
并不容易,因此我首先创建一个未压缩的归档文件,然后添加二进制文件,然后进行压缩 你是如何使用git archive保存评论的?@alexis:你不能。显示的存档文件是使用Perl脚本创建的。@akeshet不是询问如何忽略文件,而是询问如何忽略.gitignore
。换句话说,如何包含在版本控制中被忽略的文件。
git archive --format=tar -o repo.tar HEAD
tar --append --file=repo.tar thirdparty/binary
gzip repo.tar