threads / discuss / 25200

Restore annotated tag?

Subject: Restore annotated tag?

## tl;dr

4 messages between Sep 22, 2010 and Sep 22, 2010.

replies: 3people: 2as markdown or json

skillzero@gmail.com· Sep 22, 2010, 18:14 UTC · lore

Is there a way to restore an annotated tag? One was accidentally deleted and pushed. I can restore normal tags by just using git tag again, but for an annotated tag, there's a tag object and I'm not sure how to restore it.

Shawn O. Pearce· Sep 22, 2010, 18:23 UTC · re: skillzero@gmail.com · lore

Re: Restore annotated tag?

skillzero@gmail.com wrote:
> Is there a way to restore an annotated tag? One was accidentally
> deleted and pushed. I can restore normal tags by just using git tag
> again, but for an annotated tag, there's a tag object and I'm not sure
> how to restore it.

If the tag still exists, `git fsck --unreachable | grep tag` should show you output listing the dangling tag objects. Once you have that list, use `git show SHA1` to view the object. When you find the tag, make a reference to it with `git update-ref refs/tags/NAME SHA1`.

-- 
Shawn.
skillzero@gmail.com· Sep 22, 2010, 18:38 UTC · re: Shawn O. Pearce · lore

Re: Restore annotated tag?

On Wed, Sep 22, 2010 at 11:23 AM, Shawn O. Pearce <spearce@spearce.org> wrote:
Show 10 quoted lines
> skillzero@gmail.com wrote:
>> Is there a way to restore an annotated tag? One was accidentally
>> deleted and pushed. I can restore normal tags by just using git tag
>> again, but for an annotated tag, there's a tag object and I'm not sure
>> how to restore it.
>
> If the tag still exists, `git fsck --unreachable | grep tag` should
> show you output listing the dangling tag objects.  Once you have that
> list, use `git show SHA1` to view the object.  When you find the tag,
> make a reference to it with `git update-ref refs/tags/NAME SHA1`.
Thanks, that worked.

One thing I noticed that I wasn't sure about is that I SSH'd into the server and ran git update-ref to restore the tag. That created the symbolic name in .git/refs/tags/NAME to point to that tag object. But what I noticed is that the only file listed in .git/refs/tags is the tag I restored. There are other tags in the repository (and a fresh clone gets them), but they don't show up in that directory. Is it going to be a problem that ran git update-ref on the server (which is a bare repository) rather than on a clone that I push? I just want to make sure that the tag objects are referenced so they don't go away after the 2 week garbage collection grace period.

Shawn O. Pearce· Sep 22, 2010, 18:39 UTC · re: skillzero@gmail.com · lore

Re: Restore annotated tag?

skillzero@gmail.com wrote:
Show 7 quoted lines
> 
> One thing I noticed that I wasn't sure about is that I SSH'd into the
> server and ran git update-ref to restore the tag. That created the
> symbolic name in .git/refs/tags/NAME to point to that tag object. But
> what I noticed is that the only file listed in .git/refs/tags is the
> tag I restored. There are other tags in the repository (and a fresh
> clone gets them), but they don't show up in that directory.
The other tags are in the .git/packed-refs file.
> Is it
> going to be a problem that ran git update-ref on the server (which is
> a bare repository) rather than on a clone that I push?
No.
-- 
Shawn.

← back to recent threads