Branches sind sehr wichtig. Beispielsweise arbeitet man immer erst in einem Development oder Features-Branch. Wenn da alles stimmt, wirds mit dem Master-Branch germerged = Livesystem.
Ähh...nein...dein Livesystem ist meist identisch mit einer Tag-Version. Tag-Versions sind Kopien, auf denen keine Entwicklung stattfindet.
Bei der Benutzung von Versionierungssystemen gibt es viele best-practices, aber diese findest du eigetlich überall.
Hast du viele Entwicklerteams, die an unabhängigen Featuren entwickeln, so existieren oftmals mehrere "Feature-Branches" auf denen die diese Entwicklungen stattfinden. Diese werden zu unterschiedlichen Zeitpunkten in den Trunk gemerged. Der Trunk beinhaltet also meist die aktuellste Version, die dem nächsten Release am nächsten ist. Existieren keine paralleln Entwicklungsstränge so geschieht die Entwicklung meist direkt auf dem Trunk.
Neben diesen "Feature-Branches" können auch "Live-Branches" existieren, auf denen Hotfixed für momentane LIVE-Versionen passieren. Eine Release-Version ist hier immer ein Tag eines "Live-Branches".
Das ist eine Möglichkeit für eine Release/Versionsmanagement....
MrMaxx