Tags
Tags mark a commit with a permanent name, usually a release (v1.0.0). This page covers creating, deleting, pushing, fetching and checking out tags. For what tags are, see Git Basics - Tagging.
Tags appear as labels on their commit in the commit graph and in the Tags section of the sidebar, which is collapsed by default. An info icon marks annotated tags.
Create a tag
Section titled “Create a tag”Open the Create a tag dialog from:
| Entry point | Tags |
|---|---|
| Toolbar button Tag, or palette action Create a tag… | The commit HEAD points to when the dialog opens |
| Create tag here… in the graph’s commit menu | That commit |
| Create a tag here… in the sidebar menu of a local branch or a detached HEAD | Its tip |
In a repository with no commit yet, the toolbar button is disabled: “Nothing to tag yet: the repository has no commit”. There is no default shortcut.
- Check On commit: the target commit.
- Type the Tag name (for example
v1.0.0). yaggui checks it as you type: “This name is available.”, “A tag named “name” already exists.” or “name is not a valid tag name: …”. - Optional: type a Message (optional).
- Without a message, the tag is lightweight: just a name on the commit.
- With a message, the tag is annotated: it records its author and date.
- Optional, with a message only: check Sign the tag (GPG). Git uses your signing configuration (
gpg.format,user.signingKey). - Click Create tag.
| Tag | Command |
|---|---|
| Lightweight | git tag -- <name> <sha> |
| Annotated | git tag -a -F - -- <name> <sha> (message passed on standard input) |
| Signed | git tag -s -F - -- <name> <sha> |
The toast reads “Tag name created”. If signing fails (no key, wrong passphrase, gpg missing), an error explains it with a link to the command log.
The tag is local until you push it. Undo deletes it.
Delete a tag
Section titled “Delete a tag”Locally
Section titled “Locally”- Expand Tags in the sidebar, right-click the tag, then Delete the tag….
- The Delete the tag name? dialog explains that only the local tag is deleted (a pushed tag stays on the remote) and shows
git tag -d <name>. - Click Delete the tag.
The toast reads “Tag name deleted. It pointed at abc1234.” Undo recreates it, including the annotation.
You can turn this confirmation off in Preferences › Behavior › Confirmations (Delete a tag).
On a remote
Section titled “On a remote”- Right-click the tag in the sidebar, then Delete on the remote…. With several remotes, pick one in the Delete on a remote submenu. With one remote, it is used. With none, you see “This repository has no remote.”
- The Delete tag name on origin? dialog warns that the tag is deleted on the remote for everyone and that the local tag is not touched. It shows
git push origin --delete refs/tags/<name>. This confirmation cannot be turned off. - Click Delete on the remote.
The toast reads “Tag name deleted on origin”. A tag already missing on the remote counts as deleted. This cannot be undone in yaggui.
Push tags
Section titled “Push tags”git push does not send tags by default (Sharing tags). yaggui pushes them explicitly.
| Push | Where | Command |
|---|---|---|
| One tag | Right-click the tag, then Push the tag (or Push the tag to ▸ remote when you have several) | git push --progress --porcelain <remote> refs/tags/<tag>:refs/tags/<tag> |
| All tags | Right-click the Tags section header, then Push all tags (or Push all tags to ▸ remote); right-click a remote folder, then Push all tags here; or palette action Push all tags | git push --progress --porcelain <remote> refs/tags/*:refs/tags/* |
When no remote is chosen, yaggui uses origin, or the first remote if there is no origin.
Results:
- “Tag name pushed to origin”, or “Tag name is already on origin”.
- “N tags pushed to origin” with the list, “Every tag is already on origin”, or “No tag to push”.
- If the remote already has a tag of the same name on another commit: “The remote refused the tag name: a tag of that name already exists there and points to another commit. Delete the remote tag first, or rename yours.” When pushing all tags, the other tags are still pushed.
- If a server rule or hook declines the tag: “The remote refused the tag name (server rule or hook). See the command log for its answer.”
Pushing all tags does not delete the remote’s tags that you do not have locally. Progress shows in the status bar, where you can cancel. A push cannot be undone in yaggui. For authentication problems, see Authentication.
Fetch tags
Section titled “Fetch tags”A normal fetch already brings the tags of the branches it fetches. To fetch every tag:
| Where | Command |
|---|---|
| Palette action Fetch tags, or Fetch tags from every remote on the right-click menu of the Tags or Remote section header | git fetch --progress --tags --all |
| Fetch its tags on the right-click menu of a remote folder | git fetch --progress --tags <remote> |
The toast reads “Tags fetched”. Fetching tags never deletes local tags. It is not recorded for undo. See Fetch, pull and push.
Check out a tag
Section titled “Check out a tag”Checking out a tag detaches HEAD (detached HEAD). yaggui explains this first.
Double-click a tag in the sidebar, or right-click it, then Check out the tag…. Double-clicking a tag label in the graph does nothing.
The Check out the tag name dialog warns that commits made in detached HEAD belong to no branch and are easily lost. It offers:
| Button | What it does |
|---|---|
| Create and check out (default) | Creates a branch at the tag, named in Branch name (default <tag>-branch, checked as you type), then checks it out: git branch -- <name> refs/tags/<tag>, then git switch --no-guess <name> |
| Continue in detached HEAD | git switch --detach <commit>, for looking at the code only. You can create a branch later from the HEAD row of the sidebar. |
| Cancel | Nothing |
If you have local changes, the local changes dialog appears before the switch. With Create and check out, the branch is created even if you then cancel the switch.
| Operation | Undo |
|---|---|
| Create a tag | Yes |
| Delete a local tag | Yes, the tag comes back as it was |
| Check out a tag | Yes. With Create and check out, the branch creation and the checkout are two separate undo steps. |
| Push a tag, push all tags, delete a tag on a remote | No: the remote changed |
| Fetch tags | No (not recorded) |
See Undo and redo. Every command appears in the command log.