2017-03-06 4 views
2

Unser Team ist neu in Git (wir sind mehr ein Svn-Shop). Wir versuchen, die Konzepte herauszufinden, aber manchmal sehen wir seltsame Ergebnisse.Was bedeutet dieser Git-Graph?

Zum Beispiel, hier ist ein Screenshot von GitKraken:

Git Kraken Screenshot

Die blaue Linie ist der Master-Zweig, warum gibt es hier eine Lücke? Welcher git Befehl könnte dies reproduzieren und gibt es ein Problem damit?

+1

Mögliche Duplikate von [Was genau meinen wir mit "Zweig"?] (Http://stackoverflow.com/questions/25068543/what-exactly-do-we-mean-by-branch) – mkrieger1

+1

@ mkrieger1 vielleicht ist es ein Duplikat, weil wir nicht ganz verstehen, was ein Zweig ist, aber kannst du uns erklären, was wir falsch verstanden haben –

Antwort

1

Die blaue Linie ist nicht Ihr Master-Zweig. Ein Commit gehört keinem bestimmten Zweig an. In Git ist Ihre Geschichte eine DAG (gerichteter azyklischer Graph). Branches und Tags sind nur Post-It-Notizen, die an jeden Commit haften, den Sie mögen, und wie bei echten Post-It-Notizen können Sie den Zweig oder Tag-Marker abziehen und ihn an jedes andere Commit kleben (nicht unbedingt die beste Idee mit bereits gepushed) Geschichte, aber vollkommen legal mit rein lokalen Sachen). Der einzige Unterschied zwischen einem Post-it und einem post-it besteht darin, dass der post-it Branch automatisch in den neuen commit verschoben wird, wenn Sie den Zweig ausgecheckt haben (eigentlich den Zweig, nicht nur den commit, auf den der Zweig verweist) , es könnte mehrere Verzweigungen post-its auf dasselbe Commit geben) und ein neues Commit erstellen.

Wenn also die obere linke hellblaue Linie Teil Ihres Master-Zweiges ist, so sind die beiden roten Commits (aber nicht neuere über dem Bild) und auch die pinke Commit in der unteren rechten und die hell- und dunkelblauen Commits in der unteren linken Ecke.

4

Die Linien und ihre Farben entsprechen nicht direkt den Zweigen. Ein Zweig ist nur ein Zeiger auf ein Commit. Der Link in mkrieger1s answer diskutiert dies im Detail.

Ihr Diagramm ist in Ordnung, Sie lesen/interpretieren es falsch. Jeder große Punkt (mit einem Avatar darauf) ist ein Commit, jeder Commit hat genau einen Eltern-Commit. Jeder kleine Punkt ist ein Merge-Commit, von denen jeder genau zwei Eltern hat.

Der große Knoten in der Mitte ist ein Merge-Commit mit zwei Eltern-Commits (die Linien, die den Knoten von unten erreichen); Das Merge-Commit selbst ist für drei weitere Commits übergeordnet (die über dem Merge selbst liegen).

Sie sehen dies in jeder grafischen Darstellung von Git-Repositories, und es ist völlig in Ordnung.

-1

Es sieht aus wie der blaue Zweig wurde in den roten Zweig zusammengeführt und dann gelöscht. Das ist in Ordnung; Wenn der Zweig zusammengeführt wurde, werden die darin enthaltenen Commits Teil des Zielzweigs, so dass "Master" nicht mehr benötigt wurde. Später wurde ein neuer Zweig "Master" erstellt.

+0

Kein Master wa Rot erstellt oder gelöscht, und t scheint (im Vergleich zu der anderen Antwort), dass Sie nicht wie dieses Diagramm erhalten haben ist gemacht –

+0

Nun, Sie haben gefragt "Welcher git Befehl könnte dies reproduzieren" und löschen und neu erstellen der Master-Zweig ist eine Möglichkeit, um Ihr Ergebnis zu reproduzieren. Der Punkt ist, wenn Ihr Master-Zweig Teil eines anderen Zweigs wird (z. B. durch Zusammenführen), ist es egal, ob Sie ihn löschen und später neu erstellen; Ein Git-Zweig hat keine Historie, aber das Commit, auf das er zeigt, tut es. – Molip