Ein Dangling Commit ist ein Commit, das nicht mit einer Referenz verknüpft ist, dh es gibt keine Möglichkeit, es zu erreichen.
Betrachten Sie zum Beispiel das folgende Diagramm. Angenommen, wir löschen den Zweig featureX, ohne seine Änderungen zusammenzuführen, dann wird Commit D zu einem baumelnden Commit, da ihm keine Referenz zugeordnet ist. Wäre es in Master zusammengeführt worden, hätten HEAD- und Master-Referenzen auf Commit D hingewiesen, und es würde nicht mehr baumeln, selbst wenn wir featureX gelöscht hätten. Lesen Sie den Hinweis nach dem Diagramm, um dies besser zu verstehen.
Git sammelt automatisch Müll (dh entsorgt) baumelnde Commits. Wir können das verwenden git reflog
, um einen Zweig (von baumelnden Commits) wiederherzustellen, der gelöscht wurde, ohne ihn zusammenzuführen. Gelöschte Commits können nur wiederhergestellt werden, wenn sie im lokalen Objektspeicher vorhanden sind. Wenn es Müll gesammelt wurde, können wir ihn nicht wiederherstellen.
HINWEIS : Ein Zweigstellenname, dh eine Zweigstellenbezeichnung, ist tatsächlich ein Verweis auf das letzte Commit für einen Zweig, dh die Spitze des Zweigs. In der obigen Abbildung beziehen sich featureX, master und HEAD lediglich auf bestimmte Commits. FeatureX- und Master-Labels beziehen sich auf die neuesten Commits in ihren jeweiligen Zweigen. HEAD bezieht sich im Allgemeinen auf die Spitze des aktuell ausgecheckten Zweigs (in diesem Fall Master). Wenn Sie ein älteres Commit in Ihrem aktuellen Zweig auschecken, befindet sich HEAD in einem getrennten Zustand, dh es zeigt auf das ältere Commit anstelle des neuesten. Beachten Sie auch, dass HEAD als symbolische Referenz bezeichnet wird, da es tatsächlich auf die aktuelle Verzweigungsbezeichnung zeigt und jede Verzweigungsbezeichnung immer auf die Spitze der Verzweigung zeigt. Unter normalen Umständen verweist HEAD indirekt auf das letzte Commit.
Beachten Sie außerdem, dass Git seinen Commit-Graphen / Verlauf als gerichteten azyklischen Graphen darstellt . Jedes Commit hat einen Verweis auf das übergeordnete Element. Daher zeigen die Pfeile in einem Festschreibungsdiagramm vom untergeordneten Festschreiben zum übergeordneten Festschreiben. Wir benötigen einen Verweis auf das letzte untergeordnete Commit, um die älteren Commits in einem Zweig zu erreichen.
PS - Das obige Diagramm und Verständnis wurde aus diesem kostenlosen Kurs erhalten . Obwohl der Kurs ziemlich alt ist, ist das Wissen immer noch relevant.
git gc
, wenn ich nicht denke, dass etwas mit meinem Repo nicht stimmt , und 2) ich mir darüber überhaupt keine Sorgen machen muss, da diese baumelnden Teile bereits normal und dumm sind Griff ist sie?