Skip to content

FAQ & troubleshooting

It says "already on vX"

HEAD already has a tag. That's the double-tag guard — make a new commit, or retag deliberately with -f.

It says the tag "already exists on remote"

Someone (or a previous run) already pushed that tag. gitagger doctor shows local-only vs remote-only tags. Overwrite only if you mean it (-f force-pushes).

It refuses to move a float backwards

release-action.sh only moves vX / vX.Y forward. If it refuses, the new tag doesn't descend from the floats — usually a rewound or stale history. Don't force it blindly: verify the new tip contains everything (git diff <float> <tip> --stat), then move floats by hand with git tag -f + git push --force. And stop rewriting public history — merge forward instead.

It kept the tag locally

No remote (no remote "origin") or unreachable remote (offline?) — the tag is created, just not pushed. Run the printed git push <remote> <tag> later.

It tagged nothing on a release commit

Correct behavior, not breakage: release commits already carry tags, so gitagger aborts instead of double-tagging. The action's self-test hits this on purpose and probes a fresh commit instead.

My format wasn't detected

Unknown tag styles are ignored; with no recognizable tags gitagger starts at triple. Force a style with --format, or set format: in config. doctor lists "odd tags" it skipped.

Config ignored?

gitagger check -v shows the resolved values and the file they came from. Remember: flags beat config, and the file is looked up in the working directory (-p / working-directory / -w change where that is).

Typo'd command?

hlp and friends get a did-you-mean suggestion with exit code 3. Gibberish gets none.

Still stuck?

Open an issue with NO_COLOR=1 gitagger check -v output, your .gitagger.yml (secrets redacted), and the exact command plus its output.