Sie werden "trunk" haben, jetzt "master" genannt, Sie werden "branches" haben, jetzt "heads" genannt und Sie werden "tags" haben, immer noch "tags" genannt, aber sie werden keine Ordner sein , sie werden " refs "bezeichnet Revisionen, die in einem separaten Namespace im Repository gespeichert sind.
Subversion und Git haben verschiedene Möglichkeiten, Verzweigungen durchzuführen. Das grundlegende Subversion-Modell besteht darin, einen Verzeichnisbaum mit einer einzigen globalen Zeitachse zu haben. Wenn Sie verzweigen möchten, kopieren Sie einen Teilbaum in ein anderes Verzeichnis.
Andererseits hat Git einen Verzeichnisbaum mit Revisionen, die jeweils die Eltern definieren, aber jede Revision kann mehrere Eltern (eine Zusammenführung) und mehrere Kinder (Zweige) haben. Anstatt Verzeichnisse für Zweige zu haben, erhalten Sie unabhängig erstellte Revisionen. Die "refs" sind nur Namen, die mit der neuesten Revision für einen bestimmten "Zweig" verbunden sind.
Dieser Unterschied ist für die verteilte Versionskontrolle von grundlegender Bedeutung. Git (und andere verteilte Systeme) haben keine zentrale Berechtigung, um den Verlauf linear zu halten. Daher können Revisionen unabhängig voneinander auf mehreren Repositorys erstellt werden, ohne voneinander Bescheid zu wissen, und das System muss sie berücksichtigen. Es stellt sich heraus, dass die Verallgemeinerung das Verzweigen und Zusammenführen im Allgemeinen viel einfacher macht.
Beachten Sie, dass sich Revisionen in Git in keinem Zweig befinden. Sie sind einfach und Zweige enthalten sie. Sobald der Zweig zusammengeführt wurde oder sich als tote Gasse herausstellt, können Sie einfach den "ref" löschen, der darauf verweist, und ihn ganz vergessen (wenn Sie alte Versuche verwerfen, werden sie irgendwann mit Müll gesammelt git gc
). Auf diese Weise vermeiden Sie, dass alte Experimente überfüllt werden, an die sich niemand mehr erinnert.