Подтвердить что ты не робот

Как экспортировать конкретную фиксацию с помощью git -archive?

Я задал аналогичный вопрос раньше, но на него ответил неадекватно, поэтому я подумал, что снова попрошу здесь, но предоставил больше информации. Мне нужно получить разные и более старые версии репозитория 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 

После распаковки обоих, они заканчиваются точно такими же. Я не могу понять, почему и как это исправить.

4b9b3361

Ответ 1

Проблема

В обоих примерах вы экспортируете кончик мастера. Выньте свои флаги и аргументы, и у вас есть:

git archive master

Другими словами, вы явно делаете это для себя, указав все, что хранится в .git/refs/heads/master, как ваш tree-ish.

Решение

Вам нужно предоставить древовидную структуру в соответствии с gitrevisions (7), если вы хотите экспортировать другую фиксацию. Например, чтобы экспортировать commit 29435bc, вы можете указать:

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

Ответ 2

Разрешение

Это ожидаемое поведение для новейших версий Git. Удаленные хранилища Git не позволяют клиентам получать доступ к произвольным SHA1. Запрошенные объекты должны быть доступны с помощью ссылки (то есть имя файла).

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