2010-10-21 1 views
4

У меня есть рабочее дерево на моей локальной машине и удаленный репозиторий. Предположим, я хочу быстро создать более раннюю версию моего проекта на известном теге, не нарушая текущего состояния рабочей версии. Моя склонностью является проверка отдельного дерева, которое, кажется, идти, как в этом вопросе:Самый чистый способ проверки более раннего тега для целей только для чтения в Git

Download a specific tag with Git

С клоном из удаленного хранилища с последующим проверкой в ​​там. Но клон выполняет большую работу и снимает все состояние ревизии. Есть ли легкий способ сказать «захватить меня текущее состояние мира в этой фиксации/теге и слить его в этот каталог?» (Дальнейший контроль над версией не требуется - он «только для чтения», насколько это касается Git.)

Возможно, нет, просто проверка.

Спасибо.

ответ

5

Если это все местные, вы можете сделать это:

mkdir /path/to/test-tree 
cd /path/to/repo 
git read-tree <tag> 
git checkout-index -a --prefix=/path/to/test-tree/ # don't forget the last slash 

# read-tree copies content into the index 
# to restore it: 
git read-tree HEAD 

Это предполагает, что вы не» не заботьтесь о том, чтобы другое дерево имело какую-либо информацию git. Если вы хотите этого, вы можете использовать git-new-workdir script, который в основном создает клон, за исключением заполнения каталога .git символическими ссылками на исходное репо, так что он не требует дополнительного дискового пространства. Это хороший подход - нет дополнительного места на диске, и вы можете использовать один репо для разработки, один для тестирования и т. Д.

1

Попробуйте

git checkout -b new_branch [previous_tag] 
+0

Не уверен, что я хочу создать «ветвь». После того, как я закончил свое дерево только для чтения, я обычно буду просто «rm -rf» и забыть об этом. Создание ветки создает состояние внутри Git, правильно? –

+0

@quixoto: Ну, вы можете просто сделать git branch -D new_branch', и ветка пропала, как будто ее никогда не было. – Chetan

+0

Звучит так, как будто вы разговариваете друг с другом. Chetan, OP хочет отдельное дерево, не нарушая текущее дерево репо - так что никаких проверок внутри. – Cascabel