Git скопировать конкретную версию хранилища - PullRequest
1 голос
/ 28 апреля 2011

Я новичок в Git, так что прости меня, если это глупый вопрос.У меня есть git-репозиторий, и мне нужно скопировать определенную ревизию репозитория в его отдельный каталог.Скопированная версия сама по себе не обязательно должна быть git-репозиторием, мне не нужна или не нужна история или папка .git, а только то, как репозиторий выглядел для определенного коммита.

Итак, скажем, я делаюthis:

mkdir blah
cd blah
git init
touch flim0
git add .
git commit -a -m "First commit"
touch flim1
git add .
git commit -a -m "Second commit"

mystery-command ~/some-folder 4be82b42cc91ac3801ad72036cec5f88b6a13bd7

Где 4be82b42cc91ac3801ad72036cec5f88b6a13bd7 - это хэш "First commit", я хочу, чтобы ~ / some-folder был каталогом, содержащим только файл flim0.

возможно без клонирования репозитория, затем извлечения конкретной ревизии и удаления .git из клонированного репозитория?

Ответы [ 2 ]

6 голосов
/ 28 апреля 2011
 git archive master >specificversion.tar

замените мастер на идентификатор фиксации

Если вы хотите немедленно «проверить это», рассмотрите

 git archive master | (cd /tmp/exportlocation && tar x)

git archive (как обычно) с множество других полезных опций

0 голосов
/ 28 апреля 2011

Обновление

Лучше использовать параметр archive , упомянутый Sehe


То, что я хотел бы сделать, это просто проверить эту конкретную версию:

git checkout <commit-sha1>

А затем просто скопируйте все содержимое, кроме .git dir

rcopy --exclude=.git . ~/some-folder/

И тогда вы могли бы сделать

git checkout master

для повторного сброса хранилища в основную ветку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...