然而,我希望分发一个包含所有二进制文件的源代码+二进制文件快照zip文件,但不包括像.git/目录这样的内容。
创建一个快照zip文件的自然方法似乎是:
git archive -o archive.zip
但这并不包括在.gitignore中的任何二进制文件。
有什么关于如何使用git archive完成此操作的想法吗?(我的解决方法是手动创建一个zip存档文件,其中包含除.git/目录之外的所有内容)
git archive -o archive.zip
但这并不包括在.gitignore中的任何二进制文件。
有什么关于如何使用git archive完成此操作的想法吗?(我的解决方法是手动创建一个zip存档文件,其中包含除.git/目录之外的所有内容)
git archive
中排除文件和/或目录。
Edit the file: Each exclusion should have a file pattern followed by "export-ignore":
.gitattributes export-ignore
.gitignore export-ignore
/mytemp export-ignore
Make sure to ignore the .gitattributes file itself!
git archive
won't pick up the settings.您可以随意使用git archive -o archive.zip
命令或其变种。
如果从版本控制中通过 .gitignore
忽略了文件,则无法在 git-archive 中包含这些文件。
我的解决方法是在之后添加我需要的文件。
git archive --format=tar -o repo.tar HEAD
tar --append --file=repo.tar thirdparty/binary
gzip repo.tar
tar.gz
不容易,因此我首先创建一个未压缩的归档文件,然后添加二进制文件,最后再进行压缩。我认为你不能使用“git archive”来实现你所希望的目标。“git archive”基于提交工作,而你的二进制文件根本不可见。请注意,“git archive”是如此基于提交的,以至于你可以直接在没有显式存在源控制文件的裸仓库中使用“git archive”。
正如GoZoner所说,这不是可以使用git archive
完成的任务。
用正确的工具来完成正确的任务。我也做了类似的事情,并有一个Perl脚本来创建包含源代码和编译后文件的归档文件。
简单地压缩编译期间生成的所有内容可能并不是您想要的:
如果您想将库交给某人,他只对库和一些头文件感兴趣,以便能够使用该库。例如,无需存档对象文件和其他中间文件。
如果您希望您的受众能够自己构建库,请包括源代码、所需的项目文件和可能的预构建二进制文件。
...
因此,根据我的经验,我建议选择您喜欢的脚本语言,并使用该语言提供的机制来创建您的分发版。这样做,您还可以在分发版中创建与磁盘上的结构不匹配的不同文件夹结构。
为了记录创建存档的 Git 版本,您可以将版本存储在 zip 文件注释中:
.gitignore
文件。换句话说,如何包含在版本控制中被忽略的文件。 - Hugues Fontenelle