在git cherry挑选之前是否需要一个新的分支?

时间:2015-09-14 21:31:13

标签: git github git-branch git-commit git-cherry-pick

我一直在关注此示例here,它显示您在使用git cherry-pick之前创建了一个临时分支,然后您选择了该临时分支。

在示例中,临时分支称为newbar,它从foo分支出来。

是否需要临时分支?或者你可以从foo挑选出来吗?该示例并未明确说明此临时分支的用途。

2 个答案:

答案 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为其父级,如下所示:

     

enter image description here

     

这里要注意的重要一点是Git复制了所做的更改   在一个地方,并在其他地方重播。