问题
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