Während der Arbeit mit Ihrem Git-Repository werden Sie möglicherweise aus dem Betrieb aussteigen und andere Schritte ausführen, die zu Zwischenblobs führen, und sogar einige Dinge, die Git für Sie tut, um Informationsverlust zu vermeiden.
Schließlich (bedingt gemäß der git gc-Manpage ) wird eine Speicherbereinigung durchgeführt und diese Dinge bereinigt. Sie können es auch erzwingen, indem Sie den Garbage Collection-Prozess aufrufen git gc
.
Weitere Informationen hierzu finden Sie unter Wartung und Datenwiederherstellung auf der git-scm-Site.
Ein manueller GC-Lauf wird standardmäßig 2 Wochen vor der Laufzeit dieses Befehls eines Sicherheitsnetzes beendet. Es wird empfohlen, den GC gelegentlich auszuführen, um eine performante Nutzung Ihres Git-Repositorys sicherzustellen. Wie alles andere sollten Sie jedoch verstehen, was es tut, bevor Sie die Dinge zerstören, die für Sie wichtig sein könnten.
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?Dangling Blob = Eine Änderung, die es in den Staging-Bereich / Index geschafft hat, aber nie festgeschrieben wurde. Eine Sache, die bei git erstaunlich ist, ist, dass Sie es jederzeit zurückbekommen können, sobald es dem Staging-Bereich hinzugefügt wurde, da sich diese Blobs wie Commits verhalten, da sie auch einen Hash haben !!
Dangling Commit = Ein Commit, mit dem kein untergeordnetes Commit, Zweig, Tag oder eine andere Referenz direkt verknüpft ist. Sie können diese auch zurückbekommen!
quelle
So entfernen Sie alle baumelnden Commits aus Ihrem Git-Repository von http://www.tekkie.ro/news/howto-remove-all-dangling-commits-from-your-git-repository/
Stellen Sie sicher, dass Sie sie wirklich entfernen möchten, da Sie möglicherweise entscheiden, dass Sie sie schließlich benötigen.
quelle
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.
quelle