picking a commit with git mean?

Recently, I have been asked to cherry pick a commit. But I have no idea what it means. So what does cherry picking a commit in git mean? How do you do it?


Cherry picking in git means to choose a commit from one branch and apply it onto another.

This is in contrast with other ways such as merge and rebase which normally apply many commits onto another branch.

  • Make sure you are on the branch you want to apply the commit to.

    git checkout master

  • Execute the following:

    git cherry-pick <commit-hash>

  • NB:

  • If you cherry-pick from a public branch, you should consider using

    git cherry-pick -x <commit-hash>

    This will generate a standardized commit message. This way, you (and your co-workers) can still keep track of the origin of the commit and may avoid merge conflicts in the future.

  • If you have notes attached to the commit they do not follow the cherry-pick. To bring them over as well, You have to use:

    git notes copy <from> <to>

  • Additional links:

  • git official guide page

  • This quote is taken from; Version Control with Git (Really great book, I encourage you to buy it if you are interested in git)

    Edit: Since this answer is still getting impression, I would like to add very nice in action video tutorial about it:

    Youtube: Introduction to Git cherry-pick

    Using git cherry-pick The command git cherry-pick commit applies the changes introduced by the named commit on the current branch. It will introduce a new, distinct commit. Strictly speaking, using git cherry-pick doesn't alter the existing history within a repository; instead, it adds to the history. As with other Git operations that introduce changes via the process of applying a diff, you may need to resolve conflicts to fully apply the changes from the given commit . The command git cherry-pick is typically used to introduce particular commits from one branch within a repository onto a different branch. A common use is to forward- or back-port commits from a maintenance branch to a development branch.

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

    before: 之前

    after: 后


    Cherry picking in Git is designed to apply some commit from one branch into another branch. It can be done if you eg. made a mistake and committed a change into wrong branch, but do not want to merge the whole branch. You can just eg. revert the commit and cherry-pick it on another branch.

    To use it, you just need git cherry-pick hash , where hash is a commit hash from other branch.

    For full procedure see: http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html

    链接地址: http://www.djcxy.com/p/7190.html

    上一篇: 在哪里可以找到Flex / Bison,Ragel,ANTLR等的比较?

    下一篇: 用git选择提交是什么意思?