3

私は git タグを作成しましたが、他のコミットをいくつか作成しましたが、そのうちの 1 つをタグに含める必要がありますが、他のコミットは必要ありません。

例えば:

git commit 123
git commit 456
git commit 789
git commit 1011
git commit 1213

ポイントでタグを作成しました1011が、今はそこに commit を追加し、間にあるものには追加したく123ありません。それを行う方法はありますか?

4

3 に答える 3

10

タグから始めて、含めたい単一のコミットを選択する必要があります。次に、新しい状態を指すようにタグを移動します。

git checkout my_tag
git cherry-pick commit_123
git tag -f my_tag

タグを枝と考えるとわかりやすいかもしれません。ブランチと同様に、タグはコミットの履歴に沿った特定のポイントを参照します。したがって、コミット履歴が異なる新しいブランチを効果的に作成し、その新しい状態にタグを付ける必要があります。現在のタグをチェックアウトすると、元のポイントに戻ります。追加したい単一のコミットをチェリーピッキングで取得し、タグを付け直すと、その新しいブランチの状態が保存されます。-fタグを「移動」するオプションが必要です。そうしないと、tag 'my_tag' already existsエラーが発生します。

于 2012-07-20T18:42:41.070 に答える
7

用語が混同されていると思います。

  • タグは、単一のコミットに添付される文字列ラベルです。コミットを「含む」のではなく、タグ付けされたコミットに名前を付ける別の方法です。
  • ブランチはコミットの順序付けられたセットです。使用git commitすると、現在のブランチにコミットを追加します。

タグの代わりにブランチを意味しただけなのか、それともgit log mytag1011 までのすべてのコミットが表示されているのか、なぜ 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。以前のブランチは別の履歴を持つことになり、ブランチは分岐しています。

于 2012-07-20T18:34:05.730 に答える
0

1213すべての変更がまだローカルにある場合は、コミットを1011押しつぶして、押しつぶされたコミットに再度タグを付けることができるはずです。

于 2012-07-20T18:34:00.243 に答える