Проходя переименование тегов, я узнал, что аннотированные теги сами являются объектами, имеющими собственные идентификаторы SHA1. ЗДЕСЬ
Я также знаю, как git checkout
разрешает их ссылки. ЗДЕСЬ
Если $ GIT_DIR / существует, это то, что вы имеете в виду (обычно это
полезно только для HEAD, FETCH_HEAD, ORIG_HEAD, MERGE_HEAD и
CHERRY_PICK_HEAD);
в противном случае, ссылки /, если они существуют;
в противном случае refs / tags /, если он существует;
в противном случае, ссылки / заголовки /, если они существуют;
в противном случае, refs / remotes /, если он существует;
в противном случае, refs / remotes // HEAD, если он существует.
Теперь мой вопрос: когда я делаю git checkout some_annotated_tag_name
или даже git checkout SHA1_ID_OF_ANNOTATED_TAG
, он переключает мой HEAD на коммит, на который указывает аннотированный тег, а не на объект аннотированного тега.
В чем причина этого? Если я упоминаю какой-нибудь идентификатор SHA1, он должен привести меня к этому идентификатору SHA1?
РЕДАКТИРОВАТЬ: допустим, мое аннотированное имя тега annot
. Это SHA1 216a2ee6ef4276566081c6dc1ee853bfd1798829
, а SHA1 коммита, на который он указывает, a8b21d7a46903e90d08338fd0311e2ead8d86eac
.
Теперь давайте посмотрим, какой результат мы получим.
git checkout annot
Выход:
Note: checking out 'annot'.
You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at a8b21d7... 3rd
git checkout 216a2ee6ef4276566081c6dc1ee853bfd1798829
Выход:
Note: checking out '216a2ee6ef4276566081c6dc1ee853bfd1798829'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b <new-branch-name>
HEAD is now at a8b21d7... 3rd