リリースを行っている間、以前にリリースされたタグをチェックアウトし、新しいアイテムを ( を使用してgit cherry-pick <commit-id>
) そこにチェリーピックしました。次に、 を使用して新しいタグを作成しましたgit tag <tag-name>
。
これは、変更をチェリーピックした古いタグに影響しますか?
リリースを行っている間、以前にリリースされたタグをチェックアウトし、新しいアイテムを ( を使用してgit cherry-pick <commit-id>
) そこにチェリーピックしました。次に、 を使用して新しいタグを作成しましたgit tag <tag-name>
。
これは、変更をチェリーピックした古いタグに影響しますか?
一言で言えば:いいえ。いったん作成されたタグは、ブランチ参照のように移動することを意図していません。意図的に使用する必要があります
git tag --force v1.0 <some-other-commit>
v1.0
タグを他のコミットに移動します。タグ付けされたコミットの上に他のコミットをチェリーピッキング (つまり、他のコミットによって導入された変更を適用) しても、タグには影響しません。
例として、v1.0
がタグで、履歴が次のようになっている場合、
A -- B [master,v1.0]
\
C -- D [develop]
そしてあなたは走る
git checkout v1.0
git checkout -b rc1.1
git cherry-pick C
git cherry-pick D
あなたはで終わるでしょう
A -- B [master,v1.0]
\ \
\ C' -- D' [HEAD,rc1.1]
\
C -- D [develop]
タグはv1.0
そのまま残り、コミット B を指します。
コミットをチェリーピックすると、Git は基本的にそのコミットからパッチを作成し (どのような変更が導入されたかを調べます)、それを現在の HEAD に適用します。そのプロセスでは、チェリーピックした元のコミットに戻るリンクなしで、完全に新しいコミットが作成されます。Git は、コミット メッセージとコミット作成者をコピーして、新しいコミットで再利用します。それ以外は、完全に別のコミットです。
そのため、自分で新しいコミットを作成するのと同じです。いいえ、何かをコミットするようなチェリーピッキングは、他のコミットやタグには影響しません。