これはあなたが求めていることをするはずです:
git checkout $DESTINATION # assuming here that that's a branch name, not a hash
git cherry-pick $IMPORT_BEGIN..$IMPORT_END
$IMPORT_BEGIN
チェリーピックしたい最初のコミットに名前を付ける場合は、${IMPORT_BEGIN}~1
代わりに使用する必要があることに注意してください-他の多くのgit
コマンドと同様にcherry-pick
、範囲を解釈して、「<begin>..<end>
以降のすべてのコミット」を意味します。<begin>
<end>
事前にブランチをチェックアウトすると (ハッシュによるチェックアウトではなく、切り離されたヘッドになります)、cherry-pick
自動的にブランチ ヘッドが進みます。
編集:これrebase
を行うために使用するために、複製したいコミットがという名前のブランチにあると仮定しましょうdevel
(つまり、$IMPORT_END=devel
ハッシュではありません-ブランチの代わりにハッシュを使用すると、ヘッドが切り離されてしまいます)、そしてこれらのコミットを に移動しますmaster
。その場合、これを行うことができます:
git checkout devel
git rebase --onto master $IMPORT_BEGIN..$IMPORT_END
それはコミットをコピーしますが、master
ブランチを の新しいバージョンに進めません$IMPORT_END
。これは、希望する最終状態のようです。それを達成するには、上記に従って次のことを行う必要があります。
git checkout master
git merge --ff-only devel
devel
rebase
新しいコミットを指すようにによって更新され、は同じ場所merge
を指すようになります。master