Frage Git-Zweig löschen


In Git, was bedeutet "Löschung" eines Zweiges?

Wird es aus dem Repository verschwunden sein? Oder wird es immer noch via Via navigierbar sein? git branch?

Was ich wirklich tun möchte, ist eine Verzweigung als "Sackgasse" zu markieren, dh die Verzweigung ist so weit vom Meister entfernt, dass niemand sie als Ausgangspunkt verwenden sollte, obwohl es in diesem Zweig einige gute Ideen gab mag es, als Referenz zu halten.


76
2018-02-26 15:52


Ursprung


Antworten:


Sie können den Zweig löschen, aber zuerst markieren, so dass der Verlauf nicht verschwindet. Auf diese Weise wird die Verzweigung nicht in der Verzweigungsliste angezeigt, was die Benutzer hoffentlich daran hindern sollte, daran zu arbeiten, aber die Arbeit wird nicht dauerhaft gelöscht (selbst wenn die Garbage Collection ausgeführt wird). Zum Beispiel, wenn ich einen Zweig habe, der irrelevant geworden ist, aber ich bin nicht bereit, ihn dauerhaft zu löschen, markiere ich ihn als "Archiv / <Zweigname> ".

Während an master oder ein anderer Zweig:

git tag archive/foo foo
git branch -D foo

Dies erstellt ein Tag namens archive/foo von dem foo vor dem Löschen verzweigen foo. Sie können dem Tag auch eine Nachricht hinzufügen, die erklärt, was in dem Zweig ist, warum es existiert, warum es jetzt eine Sackgasse ist usw.

git tag -m 'Foo is deprecated in favor of bar' archive/foo foo

Die Möglichkeit, aufzuzeichnen, warum eine Verzweigung veraltet ist, ist möglicherweise ein Vorteil der Markierung gegenüber dem Verschieben von Verzweigungen in einen alternativen Namespace.

Wenn Sie einen Zweig, der auf diese Weise archiviert wurde, jemals wiederbeleben müssen, ist das so einfach wie:

git branch foo archive/foo
git tag -d archive/foo       # Optional

Jetzt ist die Verzweigung zurück, als ob sie nie gelöscht wurde.


152
2018-02-26 18:06



Git-Zweige werden als Verweise auf eine Revision gespeichert. Wenn Sie die Verzweigung löschen, wird die Referenz entfernt. Wenn nichts anderes auf diese Revision verweist, wird es schließlich Müll gesammelt. Wenn Sie die Verzweigung löschen, ist sie auch ordnungsgemäß gelöscht (aus Ihrem Repository). Wenn Sie eine Verzweigung als veraltet markieren möchten, diese jedoch für die spätere Verwendung beibehalten möchten, können Sie die Verzweigung in ein Unterverzeichnis verschieben:

$ git branch
* master
  testing_feature_one
  testing_feature_two
$ git branch -m testing_feature_one deprecated/testing_feature_one
$ git branch
  deprecated/testing_feature_one
* master
  testing_feature_two

Alternativ können Sie ein separates Repository für veraltete Zweige erstellen, sie ziehen und dann aus dem Original löschen. In jedem Fall werden Sie alle Benutzer beeinflussen, die den Zweigen folgen - der Inhalt ihres Repositorys wird sich nicht ändern (und auch keiner ihrer Zweig-Namen), aber wenn sie versuchen, erneut zu ziehen, werden sie es tun müssen ihr Ziel in ihrer Konfiguration ändern.


2
2018-02-26 16:15



git branch -D <branchName> löscht Ihre Filiale aus dem Repository. Sie werden es nicht mehr sehen oder navigieren können. Außerdem werden Sie alle Dateiänderungen in diesem Zweig verlieren.

https://git-scm.com/docs/git-branch


2
2018-02-26 15:55



Es kann nicht über den Git-Zweig navigiert werden, und bis die Garbage-Collection durchgeführt wird, geht es nicht aus dem Repository verloren.

Wenn du die fragliche Verzweigung als Sackgasse markieren willst, dann mach das einfach (git tut das vielleicht nicht für dich, aber du kannst es)!

Sie als historisches Nachschlagewerk zu bezeichnen (in jeder beliebigen Form).


0
2018-02-26 16:29