之前我问了一个类似的问题,但回答不充分,所以我想我会在这里再问一下,但提供更多信息。我需要获得不同的和旧版本的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
解压缩后,它们最终完全相同。我无法弄清楚为什么或如何解决它。
答案 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访问(即文件名)。