2

タグがあるとしv1.5ます。さらにコミットが行われ、別のブランチfixが tag の前の時点で作成されましたv1.5

の修正fixが行われたので、タグ付けされた commit at で表されるコードのリリース バージョンに適用する必要があります1.5

を使用せずに、履歴の特定の時点git-cherry-pickから大量のコミット セットをマージすることは可能ですか?fix

o  ... (history)
|
o  tag v1.5
|
o (can not have in v1.5)
|
o (can not have in v1.5)
|
o (can not have in v1.5)
|\
| \ (`fix` branch)
|  \
|   o (needed at v1.5)
o   | -(can not have in v1.5)
|   o (needed at v1.5)
|   |
|   o (needed at v1.5)
o   | -(can not have in v1.5)
    o (needed at v1.5)
4

1 に答える 1

4

はい、これはチェリーピックの代わりにリベースで可能です。どちらの方法を使用しても、最終結果は同じになるはずです。

元の修正ブランチが変更されないように、最初に修正ブランチの新しい名前を作成します。

git branch fixv1.5 fix

次に、fixv1.5 を v1.5 にリベースします。

git rebase --onto v1.5 <upstream> fixv1.5

<upstream>は、修正ブランチが基づいていたコミットの SHA である必要があります。つまり、下の図で P とマークされているものです。

これで、次のような履歴が表示されます。

o  ... (history)
|
o  tag v1.5
| \
|  \   A'  B'  C'  D'
|   ---o---o---o---o  fixv1.5
|
o (can not have in v1.5)
|
o (can not have in v1.5)
|
o (can not have in v1.5) P
|\
| \ (`fix` branch)
|  \
|   o (needed at v1.5) A
o   | -(can not have in v1.5)
|   o (needed at v1.5) B
|   |
|   o (needed at v1.5) C
o   | -(can not have in v1.5)
    o (needed at v1.5) D

完全を期すために、チェリーピックの同等の使用は次のようになります

git checkout -b fixv1.5 v1.5
git cherry-pick <upstream>..fix
于 2014-01-23T16:25:03.467 に答える