2016-12-31 3 views
1

Есть репозиторий, из которого я хочу построить, однако, если я клонирую репозиторий, источник я получаю результаты в нестабильной программе. Последняя версия источника, отмеченного тегами (1.2), является стабильной, но я не уверен, как ее загрузить с помощью git. Из того, что я читал при поиске ответов, я могу сначала клонировать репозиторий, а затем использовать checkout для переключения на тег;Как загрузить определенный тег репозитория git?

git clone https://github/project/project.git

cd project

git checkout tags/1.2

Это приводит отдельностоящий режим головы который я не уверен, что проблема или нет. Однако то, чего я не получаю, когда я делаю проверку, говорит, что он переключается на тег в «рабочем дереве». Означает ли это, что если я создам его со сценариями, входящими в команду разработчиков, он будет создавать только исходный код 1.2? Я сделал это, и у меня появилась программа, которая казалась нестабильной. Однако я не могу сказать, какая версия это, потому что она не говорит (они исправляют это в более позднем выпуске).

Так я сделал это правильно? Или я лаяю неправильное дерево, используя checkout. Я имею в виду, в идеале я хотел бы иметь возможность загружать источник для этого тега без необходимости клонирования всего репозитория, но я не могу понять, как это сделать, если это даже возможно.

ответ

0

Насколько я могу судить, вы делаете это правильно.

Загрузка репо будет включать все теги, если вы не настроили git, чтобы не загружать теги.

Когда вы проверяете тег (с использованием git checkout 1.2 достаточно), вы действительно попадаете в режим голосовой головы. Но это не должно быть проблемой. (Запустите git checkout master, чтобы вернуться в HEAD).

После проверки тега ваш рабочий каталог теперь должен быть в том месте, в котором был проект, когда они отметили выпуск.

На этом этапе вы можете удалить все сгенерированные или кэшированные файлы и построить проект с нуля. Как это сделать, это зависит от кода и системы сборки. Если в проекте используется make, обычно нужно делать make clean.

+0

Спасибо за помощь! – user7357954

1

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

Вы можете сделать так:

git clone https://github.com/jquery/jquery.git --branch 3.1.1 --depth 1 

Чтобы извлечь определенный тег без другой фиксации истории. Параметр --branch может принимать имя тега, а также имя ветки в современных версиях git, как описано в this answer. --depth 1 приводит к неглубокий клон, делая выписку без дальнейшей истории. Мелкий клон подробно объясняется, например, here. Пример repo, который я использовал, jquery, достаточно велик, чтобы вы могли наблюдать разницу.

Это приведет к отсоединенному состоянию, как это должно быть.

Смежные вопросы