如何从git的贮藏中挑选樱桃?

如何从git的贮藏中挑选樱桃?,git,cherry-pick,Git,Cherry Pick,我想知道是否可以从储藏室采摘樱桃 git stash save "test cherry-pick from stash" *git cherry-pick stash@{0}* --> Is this possible? 当我尝试上面的命令时,出现以下异常: 错误: ~/Documents$ git cherry-pick stash@{0} error: Commit 4590085c1a0d90de897633990f00a14b04405350 is a merge but n

我想知道是否可以从储藏室采摘樱桃

git stash save "test cherry-pick from stash"

*git cherry-pick stash@{0}* --> Is this possible?
当我尝试上面的
命令时,出现以下
异常

错误

~/Documents$ git cherry-pick stash@{0}
error: Commit 4590085c1a0d90de897633990f00a14b04405350 is a merge but no -m option was given.
fatal: cherry-pick failed

我以前没有这样做过。但是cherry pick的主页上说它只对提交有效

   Given one or more existing commits, apply the change each one introduces,
   recording a new commit for each. This requires your working tree to be
   clean (no modifications from the HEAD commit).

隐藏不是承诺,也不会移动头部。因此,这是不可能做到的[尽管这只是一个猜测]

问题是一个隐藏由两个或三个提交组成。隐藏时,修改后的工作树存储在一次提交中,索引存储在一次提交中,任何未跟踪的文件(如果使用
--include untracked
标志)存储在第三次提交中

如果使用
gitk--all
并进行隐藏,则可以看到这一点

stash@{0}
指向包含工作树的提交

但是,如果你这样做了,你可以从中挑选

git cherry-pick "stash@{0}" -m 1
cherry pick
认为隐藏是一个合并,因此需要
-m1
参数的原因是隐藏提交具有多文件父级,如图中所示

我不确定你到底想通过采摘樱桃来实现什么。一种可能的替代方法是从存储创建分支。在那里提交更改并将其合并到当前分支

git stash branch stashchanges
git commit -a -m "changes that were stashed"
git checkout master
git merge stashchanges

这对我有用。。。吉特樱桃采摘-nm1贮藏


YMMV

事实上,隐藏不仅仅是一个提交,它是多个提交。但测井工具通常不会显示它们。看看我的答案。>>我不确定你想通过采摘樱桃来实现什么目标?--在我的例子中,通过执行stashapply/pop进行简单的合并就可以了。但是,我想知道我是否能从隐藏的零钱中挑选一些零钱。谢谢你的回复。你希望这能做什么?对git来说,
cherry pick
意味着非常具体地将某个地方(即不同的分支)的一次提交中的更改单独应用于当前分支。如果你想这样做,你只需
应用
隐藏(或者
弹出
它,如果你不再需要隐藏,也要移除它)。