Ответ 1
Обозначение ^{}
объясняется в руководстве gitrevisions
:
<rev>^{}, e.g. v0.99.8^{}
Суффикс ^, за которым следует пустая пара фигурных скобок, означает, что объект может быть тегом, и рекурсивно разыменовывает тег, пока не будет найден объект без тега.
В этом случае - refs/tags/2011-11-04
- это тег, который указывает на объект тега 0e4c39557ccb6789173c
. Выполнив refs/tags/2011-11-04^{}
мы можем разыменовать тег до конечного объекта без тега, который в данном случае - 966f8df553f18c486820
(фиксация). Обратите внимание, что ^{}
является noop, когда применяется к объектам без тегов.
Команда git show-ref
может использоваться для просмотра тегов, а также конечных разыменованных объектов без тегов:
$ git show-ref --tags
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
$ git show-ref --tags --dereference
3521017556c5de4159da4615a39fa4d5d2c279b5 refs/tags/v0.99.9c
6ddc0964034342519a87fe013781abf31c6db6ad refs/tags/v0.99.9c^{}
055e4ae3ae6eb344cbabf2a5256a49ea66040131 refs/tags/v1.0rc4
423325a2d24638ddcc82ce47be5e40be550f4507 refs/tags/v1.0rc4^{}
Из руководства пользователя git show-ref
:
-d
--dereference
Разыменовывать теги в идентификаторы объектов. Они будут показаны с добавлением "^ {}".