These are annotated tags.
The other type, a lightweight tag, is a name that refers to a commit. The tag itself doesn't exist as a separate object in the git repository, but it's just an alternative name for a normal commit object.
You would just have 1 line for each such tag in your listing there, something like:
1234567890c9438e2e8beda602972fdb87a73a15 refs/tags/lightweight
As a git graph you could think of something like this:
master
v
*----*----*----*----*----*
^
v9.1
However, the presence of two lines, one of them with that ^{}
syntax, means that these tags are annotated tags.
These exist as their own separate objects in the git repository and also refer to a regular commit object.
So with these two lines:
2191702bddc9438e2e8beda602972fdb87a73a15 refs/tags/V1.0
0bfeb6f7a1d2789b3e3d9944edbe680cd7355b6a refs/tags/V1.0^{}
This means that the annotated tag object is in the object with id 2191702...
, whereas that tag object refers to commit 0bfeb6f7a...
.
master
v
*----*----*----*----*----*
|
tag-object
^
V1.0
TL,DR: Lightweight tags would show only the first line, the presence of the second line means these are annotated tags where the tag-name refers to an annotated tag object, and the second reference with ^{}
denotes the commit the tag refers to.