web-dev-qa-db-ja.com

バージョニングにタグとリリース/ベータブランチを使用する必要があるのはなぜですか?

私はgitを約1年間使用していますが、タグ付けを使用して、さまざまなバージョンのコミットにタグを付けたいと考えています。タグを操作するために使用するコマンドに関する多くの情報を見つけましたが、1.1.0という新しいブランチを作成してクラウドする必要がない場合、タグ付けを使用する理由は何ですかまったく新しいgitコマンドのセットで私の心?

分岐するのではなく、タグ付けするのには多くの正当な理由がなければなりませんが、それらの利点が何かを知りたいです。

107
wufoo

タグは主に、コミットにタグを付けることにより、プロジェクトの特定のバージョンを将来参照するために使用されます。もちろん、いつでもブランチを使用できますが、バージョンを大幅に変更すると、未使用またはめったに使用されないブランチが大量に発生します。

実際には、タグはとにかくブランチのないブランチであり、プロジェクトの特定のバージョンを参照する方法を追加するだけで、複雑さが軽減されます。

編集: ここ は、すべてのプロジェクトで使用するgitを使用する良い方法です。

87
Hakan Deryal

タグは不変です。

一方、「1.0.0」という名前のブランチを作成できます-あなたまたはコミット権を持つ人は、そのブランチに意図的にプッシュして、1.0.0の意味を変更することもできます。

タグを作成すると、タグでそれを行うことはできません-それだけです。タグ1.0.0はまさにそれを意味し、変更できません*

これが、タグとブランチの実際の主な違いです

* タグを削除して再作成することでタグを変更できますが、偶然ではありません。

136
AD7six

タグの両方のブランチを組み込むワークフローを使用する傾向があります。タグは、リリースされたコードまたは注目すべき開発ビルドをマークするのに適しています。ブランチは、特定のバージョンに関連するすべての変更を追跡するのに適しています。

このタイプのワークフローに関する優れた記事を次に示します。 http://nvie.com/posts/a-successful-git-branching-model/

ブランチとタグは同じものです(コミットへのポインター、別名。 "ref" )。ただし、タグが永久に存在する間、ブランチは自動的に次のコミットに移動します。1 同じコミットで。

リリースを作成するときは、通常、そのリリースのビルド元のコードの「スナップショット」にマークを付け、コードを進化させ続けてもそのようにマークを付けたままにするため、タグを使用します。

そのためにブランチを使用しようとすると、誤って別のコミットに移動し、そこからリリースがnotビルドされた可能性があります。


1 もちろん、タグを削除しない限り。

注:これは古い質問であることに気づきましたが、ブランチとタグの類似性(および1つの重要な違い)は、他の回答でははっきりと明かされていないと感じました。

14

タグを使用して、履歴内の重要なコミットを記録します。 「これは、ビルドサーバーが壊れた雨の木曜日にこのバージョンで使用した正確なコミットです」。タグの代わりにブランチを使用すると、使用した正確なコミットを知ることはできません。 「このブランチのどこかでバージョン1.1.0をリリースしました」ということだけを知っています。ただし、そのコミットの正確なハッシュを手動で書き留めない限り、そもそもタグを使用する理由です:)

6
ralphtheninja