Как мне экспортировать определенный коммит с помощью 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 

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

2 ответа

Решение

Эта проблема

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

git archive master

Другими словами, вы явно делаете это для себя, определяя все, что хранится в .git/refs/head /master, как свое дерево.

Решение

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

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

Разрешение

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

ГИТ-загрузка-архив-архиватор-умер-с ошибкой

Другие вопросы по тегам