Ich benutze git seit ungefähr einem Jahr und möchte Tagging verwenden, um Commits in verschiedenen Versionen zu markieren. Ich habe viele Informationen zu den Befehlen gefunden, die für die Arbeit mit Tags verwendet werden sollen, aber ich möchte wissen, warum Tagging überhaupt verwendet wird, wenn ich nur einen neuen Zweig namens erstellen kann 1.1.0
und meine Gedanken nicht mit einem Ganzen trüben muss neuer Satz von Git-Befehlen?
Es muss viele gute Gründe für das Markieren und nicht für das Verzweigen geben, aber ich würde gerne wissen, was diese Vorteile sind.
Ein Tag ist unveränderlich .
Während Sie einen Zweig mit dem Namen "1.0.0" erstellen können, können Sie oder jeder mit Festschreibungsrechten auch einfach (absichtlich oder nicht) auf diesen Zweig pushen und ändern, was 1.0.0 bedeutet.
Sie können das nicht mit einem Tag machen, wenn Sie ein Tag erstellt haben - das war's; Tag 1.0.0 bedeutet genau das und kann nicht geändert werden * .
Das ist der praktische Hauptunterschied zwischen einem Tag und einem Zweig
* Sie können ein Tag löschen und neu erstellen, wodurch ein Tag geändert wird, aber sicherlich nicht zufällig.
quelle
Ich verwende normalerweise einen Workflow, der sowohl Tags als auch Zweige enthält. Tags eignen sich gut zum Markieren von veröffentlichtem Code oder bemerkenswerten Entwicklungs-Builds. Zweige sind gut geeignet, um alle Änderungen zu verfolgen, die für eine bestimmte Version relevant sind.
Hier ist eine gute Beschreibung dieser Art von Workflow: http://nvie.com/posts/a-successful-git-branching-model/
quelle
Verzweigung und Tag sind dasselbe (Zeiger auf ein Commit, auch bekannt als "ref" ), außer dass Verzweigung automatisch zum nächsten Commit wechselt, während Tag für immer 1 auf demselben Commit bleibt .
Wenn Sie eine Version erstellen, möchten Sie im Allgemeinen den "Snapshot" des Codes markieren, aus dem diese Version erstellt wurde, und Sie möchten, dass er auch dann so markiert bleibt, wenn Sie den Code weiterentwickeln, sodass Sie ein Tag verwenden.
Wenn Sie versuchen, dafür einen Zweig zu verwenden, wird dieser möglicherweise versehentlich zu einem anderen Commit verschoben, aus dem die Version nicht erstellt wurde.
1 Es sei denn, Sie löschen das Tag natürlich.
HINWEIS: Mir ist klar, dass dies eine alte Frage ist, aber ich hatte das Gefühl, dass die Ähnlichkeit (und ein entscheidender Unterschied) zwischen Zweigen und Tags in anderen Antworten nicht so deutlich herausgearbeitet wurde, wie es hätte sein können.
quelle
git commit
wird der Kopf des ausgecheckten Zweigs aktualisiert, um auf das neue Festschreiben zu verweisen. Ja, aber kein anderer Zweig wechselt „automatisch“ zum nächsten Festschreiben. Sie sollten den ersten Absatz Ihrer Antwort klarstellen..git\refs\heads
, die den Hash des Commits enthält. Commits selbst "erinnern" sich nicht daran, welcher Zweig sie erstellt hat. Dies unterscheidet sich beispielsweise von Mercurial, bei dem die Zweiginformationen in die Metadaten des Commits geschrieben werden können.Sie verwenden Tags, um wichtige Commits im Verlauf zu notieren. "Dies war genau das Commit, das wir an diesem regnerischen Donnerstag, als der Build-Server kaputt ging, für diese Version verwendet haben." Wenn Sie einen Zweig anstelle eines Tags verwenden, können Sie nie genau wissen, welches Commit Sie verwendet haben. Sie wissen nur "Wir haben Version 1.1.0 irgendwo in diesem Zweig veröffentlicht", es sei denn, Sie notieren den genauen Hash für dieses Commit manuell, weshalb Sie zuerst Tags verwenden :)
quelle
Neben den anderen Antworten sind hier meine 2 Cent.
Kurze Antwort: Verwenden Sie Tags für Release-Versionen
Lange Antwort: Ich glaube, dass die Verwendung von Tags für die Release-Versionierung besser ist als die Verwendung von Zweigen. Wenn Sie die Relase aktualisieren müssen, verzweigen Sie einfach vom getaggten Commit und erstellen Sie nach Abschluss der Arbeit an diesem Zweig (höchstwahrscheinlich einem Hotfix-Zweig) ein neues Tag am Kopf dieses neuen Zweigs mit der neuen Version. Führen Sie diesen Zweig dann wieder in Master / Develop zusammen, da Sie eine Release-Version wirklich nicht ändern sollten, es sei denn, es handelt sich um einen Hotfix, der wahrscheinlich wieder in Ihren Quellcode eingefügt werden sollte. Löschen Sie dann diesen Zweig, da er nicht mehr benötigt wird. Wenn Sie einen anderen Hotfix auf diese neue Version anwenden müssen, wiederholen Sie die gleichen Schritte.
Lesen Sie den Abschnitt des folgenden Artikels, in dem gezeigt wird, wie ein Hotfix mit dem Git-Workflow des Autors zusammengeführt wird - https://hackernoon.com/a-branching-and-releasing-strategy-that-fits-github-flow-be1b6c48eca2
quelle