首页 文章

樱桃挑选git是什么意思?

提问于
浏览
1567

最近,我被要求樱桃选择提交 . 但我不知道这意味着什么 . 那么 cherry picking 在git中提交是什么意思呢?你怎么做呢?

7 回答

  • 132

    在Git中挑选Cherry意味着从一个分支中选择一个提交并将其应用到另一个分支 .

    这与其他方式形成对比,例如 mergerebase ,它们通常将许多提交应用到另一个分支上 .

    • 确保您在要应用提交的分支上 .
    git checkout master
    
    • 执行以下操作:
    git cherry-pick <commit-hash>
    

    N.B:

    • 如果你从公共分支机构挑选,你应该考虑使用
    git cherry-pick -x <commit-hash>
    

    这将生成标准化的提交消息 . 这样,您(和您的同事)仍然可以跟踪提交的来源,并可能避免将来发生合并冲突 .

    • 如果您在提交中附有说明,则不遵循樱桃选择 . 为了把它们带过来,你必须使用:
    git notes copy <from> <to>
    

    其他链接:

  • 1

    这句话取自; Version Control with Git(非常棒的书,如果你对git感兴趣,我鼓励你买它)

    编辑:由于这个答案仍然有印象,我想添加一个非常好的动作视频教程:

    Youtube: Introduction to Git cherry-pick

    使用git cherry-pick命令git cherry-pick commit应用当前分支上命名提交引入的更改 . 它将引入一个新的,独特的提交 . 严格来说,使用git cherry-pick不会改变存储库中的现有历史记录;相反,它增加了历史 . 与通过应用diff的过程引入更改的其他Git操作一样,您可能需要解决冲突以完全应用来自给定提交的更改 . 命令git cherry-pick通常用于将特定提交从存储库中的一个分支引入到不同的分支上 . 常见的用途是从维护分支到开发分支的转发或后端提交 .

    $ git checkout rel_2.3
    $ git cherry-pick dev~2 # commit F, above
    

    之前:
    before

    之后:
    after

  • 35

    Git中的Cherry挑选旨在将一个分支从一个分支应用到另一个分支 . 如果你这样做可以做到 . 犯了一个错误,并将更改提交到错误的分支,但不想合并整个分支 . 你可以这样 . 恢复提交并在另一个分支上挑选它 .

    要使用它,您只需要 git cherry-pick hash ,其中 hash 是来自其他分支的提交哈希 .

    有关完整程序,请参阅:http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html

  • 1890

    cherry-pick是一个Git功能 . 如果有人想在一个分支中将特定提交提交到目标分支,则使用cherry-pick .
    git cherry-pick步骤如下 .

    • checkout(切换到)目标分支 .

    git cherry-pick <commit id>
    

    这里commit id是另一个branch.Eg的活动id .

    git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f
    
    • 推送到目标分支

    访问https://git-scm.com/docs/git-cherry-pick

  • 11

    你可以认为一个樱桃选择与一个rebase类似,或者更确切地说它像一个rebase一样管理 . 通过这个,我的意思是它需要一个现有的提交并重新生成它,作为起点,你当前所在分支的负责人 .

    rebase 接受具有父X的提交并重新生成提交,就像它实际上有父Y一样,这正是 cherry-pick 所做的 .

    Cherry pick更多地是关于如何选择提交 . 使用 pull (rebase),git隐式重新生成你的本地提交,而不是基于拉到你的分支,但是 cherry-pick 你明确地选择了一些提交,并在你当前的分支上隐式重新生成它们(它们) .

    所以你这样做的方式不同,但在幕后他们是非常相似的操作 - 提交的再生 .

  • 6

    它有点像Copy(从某个地方)和Paste(到某个地方),但是对于特定的提交 .

    例如,如果要进行热修复,则可以使用 cherry-pick 功能 .

    在开发分支中执行 cherry-pick ,并在承诺发布分支的情况下执行 merge . 同样,从发布分支到主服务器执行 cherry-pick . 瞧

  • 210

    Short example of situation, when you need cherry pick

    考虑以下场景 . 你有两个分支 .

    a) release1 - 这个分支将交给您的客户,但仍有一些问题需要解决 .

    B) master - 经典主分支,您可以在其中添加release2的功能 .

    NOW :你修复了 release1 中的内容 . 当然,您也需要在 master 中进行此修复 . 这是樱桃采摘的典型用例 . 因此,在这种情况下,挑选意味着您从release1获取提交并将其合并到master中 .

相关问题