Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022
Git speichert den Verlauf als Diagramm von Momentaufnahmen, die als Commits bezeichnet werden, des gesamten Repositorys. Jeder Commit enthält auch einen Zeiger auf einen oder mehrere vorherige Commits. Commits können mehrere Eltern haben und eine Historie bilden, die eher einem Graphen als einer geraden Linie gleicht. Dieser Unterschied in der Geschichte ist unglaublich wichtig und der Hauptgrund, warum Benutzer Git verwirrend finden.
Hinweis
Wenn Sie in Ihrem Git-Verlauf keine Änderung finden können, von der Sie wissen, dass Sie sie gemacht haben, erfahren Sie mehr darüber, wie die Vereinfachung des Git-Verlaufs funktioniert, indem Sie sich Git hat meine Änderungen verloren: Ein Blick auf die Vereinfachung der Git-Historie ansehen.
Grundlagen des Commitverlaufs
Beginnen Sie mit einem einfachen Verlaufsbeispiel: einem Repository mit 3 linearen Commits.
Commit A ist das übergeordnete Element von Commit B, und commit B ist das übergeordnete Element von Commit C. Diese Geschichte ähnelt einem CVCS.
Der Pfeil, der auf C zeigt, ist eine Verzweigung.
Der Name main lautet, da dies der Standardname für den Hauptzweig in einem Git-Repository ist.
Verzweigungen sind Zeiger auf bestimmte Commits, weshalb Verzweigungen in Git so leicht und einfach sind.
Ein wichtiger Unterschied in Git im Vergleich zu CVCS besteht darin, dass ich meine eigene vollständige Kopie des Repositorys habe. Ich muss mein lokales Repository mit dem Remote-Repository synchronisieren, indem ich die neuesten Commits aus dem Remote-Repository erhalte. Dazu ziehe ich den Hauptzweig mit dem folgenden Befehl:
git pull origin main
Dieser Vorgang ("Pulls") überträgt alle Commits aus dem main Branch des Remote-Repositories (standardmäßig origin genannt) in den main Branch des lokalen Repositories. Der Pullvorgang hat einen neuen Commit kopiert, und der main Branch im lokalen Repository verweist nun auf diesen neuen Commit.
Verzweigungshistorie verstehen
Jetzt möchte ich meinem Code eine Änderung vornehmen. Es ist üblich, mehrere aktive Branches zu haben, in denen Sie gleichzeitig an verschiedenen Features arbeiten. Dies steht in starkem Gegensatz zu CVCS, wo neue Zweige aufwendig sind und selten erstellt werden. Der erste Schritt besteht darin, mit dem folgenden Befehl auf einen neuen Branch zu wechseln:
git checkout -b cool-new-feature
Dies ist eine Verknüpfung, die zwei Befehle kombiniert: git branch cool-new-feature um die Verzweigung zu erstellen und mit git checkout cool-new-feature um in der Verzweigung zu arbeiten zu beginnen.
Zwei Verzweigungen zeigen nun auf denselben Commit.
Ich werde einige Änderungen am cool-new-feature Branch in zwei neuen Commits durchführen, E und F.
Meine Commits sind von dem cool-new-feature Branch erreichbar, da ich sie in diesem Branch gemacht habe.
Ich bin mit meinem Feature fertig und möchte es in main zusammenführen.
Dazu verwende ich den folgenden Befehl:
git merge cool-feature main
Die Graphenstruktur der Historie wird sichtbar, wenn eine Zusammenführung erfolgt. Git erstellt einen neuen Commit, wenn ich meinen Branch in einen anderen Branch zusammenführe. Dies ist ein Zusammenführungs-Commit. In diesem Zusammenführungs-Commit sind keine Änderungen enthalten, da keine Konflikte aufgetreten sind. Wenn ich Konflikte hatte, würde der Zusammenführungs-Commit die erforderlichen Änderungen enthalten, um diese Konflikte zu lösen.
Geschichte in der realen Welt
Nachfolgend sehen Sie ein Beispiel für den Git-Verlauf, der dem Code in der aktiven Entwicklung in einem Team ähnelt. Es gibt drei Personen, die Zusammenführungen von ihren eigenen Filialen in die Hauptzweige um die gleiche Zeit ausführen.
Da Sie nun verstehen, wie Verzweigungen und Zusammenführungen die Form des Diagramms erstellen, sollte dies nicht zu beängstigend sein!