我一直在关注此示例here,它显示您在使用git cherry-pick
之前创建了一个临时分支,然后您选择了该临时分支。
在示例中,临时分支称为newbar
,它从foo
分支出来。
是否需要临时分支?或者你可以从foo
挑选出来吗?该示例并未明确说明此临时分支的用途。
答案 0 :(得分:1)
不,您不 需要 才能拥有单独的分支机构。这完全合法:
$ git log --decorate --oneline --graph --all
* f1188b1 (HEAD -> master) commit3
* 90a233e commit2
* f167481 commit1
然后仍在单一且唯一的分支master
:
$ git cherry-pick 90a233e
这里的问题是,很可能发生冲突(下面是樱桃挑选后的样本输出):
error: could not apply 90a233e... commit2
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
根据git-status
简单处理和解决:
$ git status
On branch master
You are currently cherry-picking commit 90a233e.
(fix conflicts and run "git cherry-pick --continue")
(use "git cherry-pick --abort" to cancel the cherry-pick operation)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: file1.txt
no changes added to commit (use "git add" and/or "git commit -a")
基本上,您将修复冲突,然后将更改添加到索引并运行$ git cherry-pick --continue
以完成樱桃挑选操作。
答案 1 :(得分:1)
没有必要为樱桃采摘创建一个新的分支。该示例的原因是因为模拟rebase
命令。
This example更清晰
如果您在此图表中的节点H,并且您键入了git cherry-pick E (是的,您实际上为提交键入了部分或全部SHA,但是 为简单起见,我只使用已经存在的标签 在这里,你最终得到一份提交副本E-let称之为&#34; E prime&#34; 或E&#39; - 指示H为其父级,如下所示:
这里要注意的重要一点是Git复制了所做的更改 在一个地方,并在其他地方重播。