<p>I'm not sure what GitLab is thinking here, but the Tags API and tags UI represent tags in the web interface, but they do not disruptively remove the tags from the underlying repo. This seems like a <strong>major</strong> but which I'll file later, or update this with a link to at a later point in time.</p>
<p>You can force the removal from the upstream repo <strong>which will also remove the tag from the UI</strong> using vanilla Git.</p>
<pre><code>git push upstream :refs/tags/&lt;tag to delete&gt;
</code></pre>
<p>Like this</p>
<pre><code>git push upstream :refs/tags/v5.2.3
</code></pre>

CC BY-SA 4.0
2022-04-21T06:42:33.887Z
2022-04-21T06:42:33.887Z
Evan Carroll
<p>When I hit the delete button in the Tags interface I can verify the tag does not show, but when semantic-release tries to run, I still <code>git tag</code> on the runner I still get</p>
<pre><code>fatal: tag 'v5.2.3' already exists
    at makeError (/usr/local/lib/node_modules/semantic-release/node_modules/execa/lib/error.js:60:11)
    at handlePromise (/usr/local/lib/node_modules/semantic-release/node_modules/execa/index.js:118:26)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async tag (/usr/local/lib/node_modules/semantic-release/lib/git.js:224:3)
    at async run (/usr/local/lib/node_modules/semantic-release/index.js:191:5)
    at async module.exports (/usr/local/lib/node_modules/semantic-release/index.js:260:22)
    at async module.exports (/usr/local/lib/node_modules/semantic-release/cli.js:55:5) {
  shortMessage: 'Command failed with exit code 128: git tag v5.2.3 b49dff6c91a03a326e6afde67c32a5c788914c25',
  command: 'git tag v5.2.3 b49dff6c91a03a326e6afde67c32a5c788914c25',
  escapedCommand: 'git tag v5.2.3 b49dff6c91a03a326e6afde67c32a5c788914c25',
  exitCode: 128,
  signal: undefined,
  signalDescription: undefined,
  stdout: '',
  stderr: &quot;fatal: tag 'v5.2.3' already exists&quot;,
  failed: true,
  timedOut: false,
  isCanceled: false,
  killed: false
}.map                                    
</code></pre>
<p>What's going on here?</p>

<gitlab><gitlab-ci-runner>
GitLab tag removal through the web interface does not actually remove the tag from Git
Evan Carroll
# GitLab tag removal through the web interface does not actually remove the tag from Git

(Asked by: username_0 on 2022-04-21)

When I hit the delete button in the Tags interface I can verify the tag does not show, but when semantic-release tries to run, I still git tag on the runner I still get
fatal: tag 'v5.2.3' already exists
    at makeError (/usr/local/lib/node_modules/semantic-release/node_modules/execa/lib/error.js:60:11)
    at handlePromise (/usr/local/lib/node_modules/semantic-release/node_modules/execa/index.js:118:26)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async tag (/usr/local/lib/node_modules/semantic-release/lib/git.js:224:3)
    at async run (/usr/local/lib/node_modules/semantic-release/index.js:191:5)
    at async module.exports (/usr/local/lib/node_modules/semantic-release/index.js:260:22)
    at async module.exports (/usr/local/lib/node_modules/semantic-release/cli.js:55:5) {
  shortMessage: 'Command failed with exit code 128: git tag v5.2.3 b49dff6c91a03a326e6afde67c32a5c788914c25',
  command: 'git tag v5.2.3 b49dff6c91a03a326e6afde67c32a5c788914c25',
  escapedCommand: 'git tag v5.2.3 b49dff6c91a03a326e6afde67c32a5c788914c25',
  exitCode: 128,
  signal: undefined,
  signalDescription: undefined,
  stdout: '',
  stderr: "fatal: tag 'v5.2.3' already exists",
  failed: true,
  timedOut: false,
  isCanceled: false,
  killed: false
}.map                                    

What's going on here?

**Tags:** gitlab, gitlab-ci-runner


---

## 1 answers

### Answer by username_0 on 2022-04-21. Score: 0 | Accepted answer

I'm not sure what GitLab is thinking here, but the Tags API and tags UI represent tags in the web interface, but they do not disruptively remove the tags from the underlying repo. This seems like a major but which I'll file later, or update this with a link to at a later point in time.
You can force the removal from the upstream repo which will also remove the tag from the UI using vanilla Git.
git push upstream :refs/tags/

Like this
git push upstream :refs/tags/v5.2.3


---

