私は git タグを作成しましたが、他のコミットをいくつか作成しましたが、そのうちの 1 つをタグに含める必要がありますが、他のコミットは必要ありません。
例えば:
git commit 123
git commit 456
git commit 789
git commit 1011
git commit 1213
ポイントでタグを作成しました1011
が、今はそこに commit を追加し、間にあるものには追加したく123
ありません。それを行う方法はありますか?
私は git タグを作成しましたが、他のコミットをいくつか作成しましたが、そのうちの 1 つをタグに含める必要がありますが、他のコミットは必要ありません。
例えば:
git commit 123
git commit 456
git commit 789
git commit 1011
git commit 1213
ポイントでタグを作成しました1011
が、今はそこに commit を追加し、間にあるものには追加したく123
ありません。それを行う方法はありますか?
タグから始めて、含めたい単一のコミットを選択する必要があります。次に、新しい状態を指すようにタグを移動します。
git checkout my_tag
git cherry-pick commit_123
git tag -f my_tag
タグを枝と考えるとわかりやすいかもしれません。ブランチと同様に、タグはコミットの履歴に沿った特定のポイントを参照します。したがって、コミット履歴が異なる新しいブランチを効果的に作成し、その新しい状態にタグを付ける必要があります。現在のタグをチェックアウトすると、元のポイントに戻ります。追加したい単一のコミットをチェリーピッキングで取得し、タグを付け直すと、その新しいブランチの状態が保存されます。-f
タグを「移動」するオプションが必要です。そうしないと、tag 'my_tag' already exists
エラーが発生します。
用語が混同されていると思います。
git commit
すると、現在のブランチにコミットを追加します。タグの代わりにブランチを意味しただけなのか、それともgit log mytag
1011 までのすべてのコミットが表示されているのか、なぜ eg の出力が表示されているのかを尋ねているのかどうかは明らかではありません。
git log mytag
でタグ付けされたコミットmytag
とそのすべての親をログに記録します。
ブランチを意味し、作成したブランチの履歴にまだコミット 123 が含まれていない場合は、それを行うことができgit cherry-pick
ます。
これを書いていると、コミット 123 を によってリストされた一連のコミットに追加する方法も意味していた可能性があることに気付きましたgit log mytag
。そのためには、その時点で新しいブランチを作成し、git checkout -b mybranch mytag
コミット 123 をチェリー ピックしてから、 を使用してタグを新しいコミットに移動する必要がありますgit tag -f
。その後、前のブランチ (例: ) に戻ることができますgit checkout master
。以前のブランチは別の履歴を持つことになり、ブランチは分岐しています。
1213
すべての変更がまだローカルにある場合は、コミットを1011
押しつぶして、押しつぶされたコミットに再度タグを付けることができるはずです。