Viji
@Viji
Associate DevOps Engineer

Как работают теги в Git?

какое-то время назад скачал репозиторий на локальный комп. После этого его продолжали развивать другие, добавили новые commits в ветки develop и master. Кроме того добавили tags (3.1-beta, 4.0-beta) к некоторым commits в ветке develop.

Мне нужно перевести код в текущей папке проекта в версию 4.0-beta, для этого я в его локальной папке выполняю:
git fetch
git checkout 4.0-beta
git status


Ответ последней команды следующий:
HEAD detached at с
nothing to commit, working directory clean

Мое понимание такое, у меня есть две копии проекта после его клонирования с помощью git clone: локальная и локальная-синхронизированная (обе имеются локально). После команды git fetch вся локальная-синхронизированная копия обновляется. Потом я перехожу на commit c тегом 4.0-beta и соответственно все файлы в текущей директории проекта соответствуют этому commit. Поэтому я могу их компилировать и быть уверенным, что они именно этой версии. Если я запущу git merge, то локальная-синхронизированная копия будет обеднена с локальной. Но по сути, мне это делать не обязательно, если я не хочу изменять эти файлы, а только пользоваться.
Если мои рассуждения не верны, можете ли вы их исправить? Почему git status пишет Head Detached?
  • Вопрос задан
  • 126 просмотров
Пригласить эксперта
Ответы на вопрос 2
@lorc
Да, все правильно в общих чертах. Кроме пункта про git merge.

Head Detached потому что вы сделали checkout на конкретный коммит, а не на какую-то ветку. Соответственно, вы не "находитесь" в какой-то ветке. Что гит вам и сообщает. Можете сделать git checkout -b my-new-branch и тогда это сообщение пропадает, потому что вы создадите новую ветку на текущем коммите и переключитесь в нее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы