隠し場所からのチェリーピッキングは可能かと思います。
git stash save "test cherry-pick from stash"
*git cherry-pick stash@{0}* --> Is this possible?
上記のexception
を試したところ、次のcommand
が表示されます。
Error
:
~/Documents$ git cherry-pick stash@{0}
error: Commit 4590085c1a0d90de897633990f00a14b04405350 is a merge but no -m option was given.
fatal: cherry-pick failed
問題は、スタッシュが2つまたは3つのコミットで構成されていることです。スタッシュする場合、変更された作業ツリーは1つのコミットに格納され、インデックスは1つのコミットに格納され、(--include-untracked
フラグを使用している場合)追跡されていないファイルは3番目のコミットに格納されます。
gitk --all
を使用してスタッシュを実行すると、これを確認できます。
stash@{0}
は、作業ツリーを含むコミットを指します。
ただし、そうする場合は、そのコミットからチェリーピックすることができます
git cherry-pick "stash@{0}" -m 1
cherry-pick
がstashがマージであると見なし、したがって-m 1
パラメーターが必要な理由は、グラフに示されているように、stashコミットに複数の親があるためです。
さくらんぼ狩りで何を達成したいのか正確にはわかりません。考えられる代替案は、隠し場所からブランチを作成することです。そこで変更をコミットし、それらを現在のブランチにマージします。
git stash branch stashchanges
git commit -a -m "changes that were stashed"
git checkout master
git merge stashchanges