如何使用git-archive导出特定提交?

时间:2012-06-13 15:34:31

标签: git repository export

之前我问了一个类似的问题,但回答不充分,所以我想我会在这里再问一下,但提供更多信息。我需要获得不同的和旧版本的git存储库,我遇到了麻烦。我试过的是

git checkout master~X 

git archive --format zip --output /full/path/to/zipfile.zip master 

git checkout master 


git checkout master~Y 

git archive --format zip --output /full/path/toDifferent/zipfile.zip master 

git checkout master 

解压缩后,它们最终完全相同。我无法弄清楚为什么或如何解决它。

2 个答案:

答案 0 :(得分:32)

问题

在两个示例中,您都要导出 master 的提示。取出你的旗帜和论据,你就得到了:

git archive master

换句话说,你明确地通过指定存储在 .git / refs / heads / master 中的内容作为你的树来做这件事。

解决方案

如果要导出不同的提交,则需要根据gitrevisions(7)提供树形结构。例如,要导出提交 29435bc ,您可以指定:

git archive --format zip --output /full/path/to/zipfile.zip 29435bc

答案 1 :(得分:2)

分辨率

这是最新版Git的预期行为。远程Git存储库不允许客户端访问任意SHA1。请求对象应该由ref访问(即文件名)。

git-upload-archive-archiver-died-with-error