Es scheint naheliegend zu sein, aber: Mithilfe von Versionsnummern können Sie auf einfache Weise feststellen, welche Version der Software ausgeführt wird.
Wenn die Möglichkeit besteht, dass jemand Zugriff auf eine bestimmte Iteration des Codes hat und ansonsten nicht leicht in der Lage ist, eine eindeutige Kennung zu ermitteln, sollte diese Iteration eine eindeutige Versionsnummer haben. Ich sehe das als die 'erste Regel'. Infolgedessen benötigen unterschiedliche Releases eindeutig unterschiedliche Versionsnummern.
Es kommt jedoch noch mehr ins Spiel:
Eine Möglichkeit, dies sicherzustellen, besteht darin, die Versionsnummern bei jedem Commit zu erhöhen. Dies ist jedoch normalerweise keine gute Idee. Es kann mehrere Commits / Iterationen erfordern, bis eine relativ kleine Änderung funktioniert, und es ist für die Außenwelt verwirrend, Version 0.0.1 -> 0.0.2 als Ergebnis einer großen Anzahl akkumulierter Änderungen zu sehen, dann 0.0.2 -> 0.0 .56 weil jemand einen Leerraum festgeschrieben hat, der jeweils eine Datei repariert und nichts an der Funktionalität geändert hat.
Wie weit es von "einer Version pro Vollversion" bis zu "einer Version für jedes Commit" geht, hängt davon ab, ob Sie, die anderen Benutzer, und auf welchen Systemen Sie bereit sind, die Lücken zu schließen.
Ich persönlich bin es gewohnt, an kleinen Projekten zu arbeiten, und benutze GIT-Hashes gerne bis zu einer Version, die andere verwenden, und eine Bump-Version für jede dieser Versionen (unabhängig davon, wie wenig Leute ich damit rechne). In größeren Unternehmen und größeren Projekten wird jedoch etwas anderes als semantische Versionsnummern verwendet, jedoch eine geringere Wiedergabetreue als bei jedem Commit, beispielsweise die Nummerierung von Release-Kandidaten. Diese haben Vorteile, erhöhen jedoch die Komplexität.