Was ist Git-Schnitt?

85

Ich habe versehentlich einige Remote-Zweige beschnitten und weiß nicht genau, was die Folge davon ist (ich habe in Git Extensions auf die Schaltfläche "Remote-Zweige beschneiden" geklickt, weil ich dachte, es würde einen Remote-Zweig löschen).

In der offiziellen Dokumentation heißt es "git-prune - Alle nicht erreichbaren Objekte aus der Objektdatenbank entfernen". Ich verstehe nicht wirklich, was das bedeutet. Ich vermute, dies hätte zusammengeführte Zweige entfernt, bin mir aber nicht sicher.

Daniel Ball
quelle
Mögliches Duplikat von stackoverflow.com/questions/4040717/…
Raghavan
1
Vielleicht einen Blick wert git gc: git-scm.com/docs/git-prune auch.
Kovac

Antworten:

90

"Remote-Zweige beschneiden" in Git Extensions führt den git remote pruneBefehl aus, mit dem Ihre lokalen Remote-Tracking-Zweige entfernt werden, bei denen der Zweig nicht mehr auf dem Remote vorhanden ist.

Siehe hier: https://git-scm.com/docs/git-remote#git-remote-empruneem

1615903
quelle
Also gibt es Ihrer Fernbedienung im Grunde Priorität und passt Ihre lokale an Ihre Remote-Niederlassungen an?
Honig
3
@Honey nein, es entfernt nur die lokalen Remote - Tracking - Filialen , normale Filialen nicht berührt werden .
1615903
32

Dieser Müll sammelt deine Zweige.

Das heißt, wenn ein Objekt (ein Commit) in keinem der Vorfahren Ihres Zweigs erreicht werden kann, wird es für die Git-Datenbank entfernt und kann daher nicht mehr erreicht werden.

Dies räumt das Git-Repository nur ein wenig auf und macht es leichter.

blue112
quelle
4
Laut Dokumentation ist es für Haushaltsaufgaben wie diese möglicherweise besser, eine zu erledigen, git gcals eine, git prunedie im Wesentlichen auch eine Git-Beschneidung ausführt.
Kovac
1
Downvote: Diese Antwort (und die Frage zu diesem Thema) verwirrt git pruneund git remote prune. Sie sind nicht gleich, letztere räumt tatsächlich Zweige auf, die auf der Fernbedienung nicht mehr vorhanden sind, während lokale Zweige unberührt bleiben.
JBert
12

Es ist wichtig zu wissen, dass die Pflaume repo-gebunden ist . Nicht jeder weiß, dass Sie Ihr lokales Repo mit mehreren Fernbedienungen verknüpfen können. Dies ist praktisch, wenn Sie beispielsweise mit einem Open-Source-Projekt arbeiten und gezwungen sind, über Gabeln zu arbeiten.

Für den Befehl prune ist daher ein Reponame erforderlich. In den meisten Fällen ist es das git remote prune origin, aber Sie können Ihr Repo alles nennen, es muss nicht sein origin.

Yuranos
quelle
2

Es kann Remote-Feature-Zweige geben, die entfernt werden, nachdem wir sie in Master zusammengeführt haben. Möglicherweise haben wir die Feature-Zweige gelöscht, um sie zu bereinigen. Wenn Sie jedoch den gelöschten Zweig auf dem lokalen System ausgecheckt und den Status "Tracking" festgelegt haben, löscht Git Pull diese lokalen Zweige nicht (da diese bereits vom Server getrennt sind). Um diese Art von lokalen Waisenzweigen zu bereinigen, ist der git pruneBefehl hilfreich.

Santhosh J.
quelle