How do I export a specific commit with git-archive?

不想你离开。 提交于 2019-12-18 10:54:34

问题


I asked a similar question before, but it was answered inadequately so I thought I would ask again here but providing more information. I need to get different and older versions of a git repository and I'm having trouble with that. What I've tried is

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 

After unzipping both, they end up being exactly the same. I can't figure out why or how to fix it.


回答1:


The Problem

In both your examples, you are exporting the tip of master. Take out your flags and arguments, and you have:

git archive master

In other words, you're explicitly doing this to yourself by specifying whatever is stored in .git/refs/heads/master as your tree-ish.

The Solution

You need to provide a tree-ish in accordance with gitrevisions(7) if you want to export a different commit. For example, to export commit 29435bc, you could specify:

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



回答2:


Resolution

This is an expected behaviour for the newest versions of Git. Remote Git repositories do not allow clients to access arbitrary SHA1s. The requested objects should be accessed by a ref (i.e. file name).

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



来源:https://stackoverflow.com/questions/11018411/how-do-i-export-a-specific-commit-with-git-archive

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!