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

36,312

Solution 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

Solution 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

Share:
36,312
SSEMember
Author by

SSEMember

I'm a Software Engineering college student at Rochester Institute of Technology.

Updated on July 29, 2022

Comments

  • SSEMember
    SSEMember almost 2 years

    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.