Images are reused AI-generated editorial illustrations, not documentary photographs or verified product screenshots.
Git describe produces a name based on repository history, often using a reachable tag and the distance from it. This can make a build easier to identify than an unexplained hash. It should complement a precise commit identifier, not replace a release policy or claim that a build is approved.
Understand the default tag search
By default, git describe looks for suitable annotated tags reachable from the commit. Lightweight tags require different options, such as --tags. A result may include the tag name, number of additional commits and an abbreviated object name. Repository history and available tags therefore affect the label.

Define the build-label convention
Use git describe --tags --always when your documented process intentionally includes lightweight tags and needs a hash fallback. Record the full commit separately. If you use --dirty, understand that it signals working-tree changes rather than listing or preserving them. A dirty label should not be mistaken for a reproducible source snapshot.
Check the build environment’s history
A shallow checkout or missing tags can change the result. Ensure the build process fetches the history it needs under an approved configuration. Never rename artifacts solely to make the label look like a release. Keep the label, source commit, dependency versions and build procedure connected in the delivery record.
A practical checklist
- Decide which tag types should be considered.
- Keep the complete source commit in the record.
- Check shallow-clone and tag-fetch settings.
- Treat dirty builds as requiring further explanation.
- Do not equate a label with testing or approval.
Worked example
Illustrative example: a test build is several commits after v2.0.0. Git describe gives it a useful history-derived label while the release notes retain the full commit. The client can distinguish it from the exact tagged release. A second build machine missing tags is corrected rather than given a manually invented version label.

Common questions
Will two repositories always produce the same description? Only if relevant history, tags and options align. Is the output necessarily a semantic version? No. What happens with no suitable tags? –always can provide an abbreviated object name as a fallback.
What to do next
Document the describe command in the build notes and keep a full identifier beside its output. This makes labels explainable when a later support request arrives.
