Как оформить заказ из Git - PullRequest
4 голосов
/ 24 марта 2011

Пока что, будучи единственным человеком в проекте, я копировал / вставлял папки своего проекта и переименовывал их (Ver1, Ver2, Ver3 и т. Д.) В схему управления версиями. Сейчас я пытаюсь перейти на Git.

Вот что я сделал:
Я инициализировал папку .git и добавил первую версию в репозиторий Git. Затем я добавил все остальные версии как коммиты в репозиторий git и отметил их. Так что теперь у меня есть все версии в основной ветке и в виде тегов.

Мой вопрос:
Как я могу (я не знаю, правильное ли слово checkout) взять любую версию из репозитория Git и поместить ее в произвольную папку, не переключая ветки (или любая другая операция, которую Git может решить для этого)? Просто скопировать версию (любую версию) из Git в папку без какого-либо соединения между репозиторием Git и папкой?

Ответы [ 3 ]

2 голосов
/ 25 марта 2011

Обычно вы просматриваете исторические версии непосредственно в вашем обычном рабочем дереве (вы можете извлекать любой коммит как «отдельную HEAD» / «неназванную ветвь») или косвенно просматриваете историю с помощью git log (особенноопция -p), git blame и так далее.

Но, если вам действительно нужно полностью распаковать старую версию, вы можете использовать git archive команда для создания tar архива с определенным коммитом 1 (имя тега, имя ветки (вы получите его коммит-наконечник) или идентификатор объекта фиксации (т. Е. SHA-1 значение хеша) будет работать, чтобы указать коммит).Вы можете легко передать архив в tar , чтобы распаковать его в любое удобное для вас место.

Из вашего каталога репозитория:

git archive --format=tar branch-or-tag-name-or-commit-id |
  (mkdir /path/to/destination && cd /path/to/destination && tar xf -)

git archive всегда будет работать для локальных репозиториев,Его также можно использовать с нелокальными репозиториями (или локальными репозиториями, не основанными на вашем текущем рабочем каталоге) с помощью опции --remote;не все службы хостинга Git могут разрешать извлечение архивов (они могут не захотеть тратить процессорное время или пропускную способность).


1 На самом деле вы можете использовать git archive с любым tree (т. Е. Корневой каталог или любой подкаталог, представленный в любом коммите), но чаще всего он используется с подсказками ветвей, тегами и коммитами.

1 голос
/ 24 марта 2011

до:

git clone (path to your repo)

или если вы не хотите, чтобы метаданные .git делали:

git archive (branch)
0 голосов
/ 25 марта 2011

Ваш вопрос был:

Как я могу (я не знаю, правильное ли слово checkout) взять любую версию из GIT-репозитория и поместить ее в произвольную папку без переключения веток (илилюбая другая операция GIT может подумать, что это нужно сделать)?

Вы хотите использовать команду git checkout:

git checkout myTag1.2.3 
git checkout asdf81274982shjsks 
git checkout origin/develop

Аргументом checkout может быть либо ветвь, либотег или SHA1-хэш.

Вы ВСЕГДА получаете полный репозиторий.Вы не можете оформить заказ.Помните, что git хранит снимки всего хранилища.

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