現在、複数のブランチを持つリポジトリを使用しています。
タグを作成するとき、そのタグは当時のブランチを参照しますか?
つまり、タグを作成するたびに、目的のブランチに切り替えて、そのブランチ内のタグを切り替えて、その時点でタグがそのブランチを参照する必要がありますか?
たとえば、タグを作成する場合.
git tag v1.0
タグは、現在のブランチの最新のコミットを参照します。ブランチを変更し、そこでタグを作成できます。
タグ付け中に他のブランチを参照することもできますが、
git tag v1.0 name_of_other_branch
これにより、他のブランチの最新のコミットへのタグが作成されます。
または、コミットのSHA1を直接参照することで、どのブランチに関係なく、タグをどこにでも置くことができます
git tag v1.0 <sha1>
CharlesBの答え と helmbertの答え は両方とも役に立ちますが、それらを理解するにはしばらく時間がかかりました。これを別の方法で示します。
git show <tag>
を実行してタグの詳細を表示するには、ブランチへの参照は含まれず、タグが指すコミットのIDのみが含まれます。6f6b5997506d48fc6267b0b60c3f0261b6afe7a2
)git tag v0.1.0 # tags HEAD of *current* branch
git tag v0.1.0 develop # tags HEAD of 'develop' branch
git describe
を使用して現在のブランチを記述する場合:git describe [--tags]
は、最新の[おそらく軽量]タグがこのブランチの履歴にあるため、現在のブランチをコミットの観点から説明します。git describe
によって参照されるタグは、最後に作成されたタグoverallを反映しない場合があります。タグは特定のコミットを参照し、ブランチは履歴の最後のコミットへの移動参照であるため、タグとブランチは完全に無関係です。ブランチは行きますが、タグは残ります。
したがって、コミットにタグを付けるとき、gitはタグ付けする対象のSHA1を提供する場合、どのコミットまたはブランチがチェックアウトされるかを気にしません。
ブランチを参照してタグを付け(ブランチの先端にタグを付けます)、後でブランチの先端が他の場所にあると(たとえばgit reset --hard
を使用して)言ったり、ブランチを削除したりすることもできます。ただし、作成したタグは移動しません。
追加パラメーターなしでgit tag <TAGNAME>
だけを呼び出すと、Gitは現在のHEAD(つまり、現在のブランチのHEAD)から新しいタグを作成します。このブランチにコミットを追加すると、ブランチHEADはそれらの新しいコミットに対応しますが、タグは常に同じコミットを参照します。
git tag <TAGNAME> <COMMIT>
を呼び出すときに、タグの作成に使用するコミットを指定することもできます。
とにかく、タグは特定のコミット(ブランチではなく)への単なる「ポインター」です。
過去のコミット用のタグを作成できます。
git tag [tag_name] [reference_of_commit]
例えば:
git tag v1.0 5fcdb03