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

wou*_*non 23 git cherry-pick

我想知道是否可以从藏匿处采摘樱桃.

git stash save "test cherry-pick from stash"

*git cherry-pick stash@{0}* --> Is this possible?
Run Code Online (Sandbox Code Playgroud)

我在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
Run Code Online (Sandbox Code Playgroud)

Kla*_*urn 33

问题是存储包含两个或三个提交.当存储时,修改后的工作树存储在一次提交中,索引存储在一次提交中,并且(如果使用该--include-untracked标志)存储在第三次提交中的任何未跟踪文件.

如果你使用gitk --all并藏匿,你可以看到这个.

在此输入图像描述

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

但是,如果你这样做,你可以从那个提交中挑选

git cherry-pick "stash@{0}" -m 1
Run Code Online (Sandbox Code Playgroud)

其原因cherry-pick认为,藏匿的合并,因此需要的-m 1参数是藏匿犯有multpile父母,你可以在图中看到.

我不确定你想通过樱桃采摘实现什么.一种可能的替代方法是从藏匿处创建分支.提交更改并将它们合并到当前分支.

git stash branch stashchanges
git commit -a -m "changes that were stashed"
git checkout master
git merge stashchanges
Run Code Online (Sandbox Code Playgroud)

  • >>我不确定你想通过采摘樱桃达到什么目的?-- 就我而言,通过执行 stash apply/pop 进行简单的合并就可以了。但是,我想知道是否可以从隐藏的更改中挑选一些更改。感谢您的回复。 (2认同)