What does cherry-picking a commit with Git mean?
最近,我被要求
那么,在git中挑选一个提交意味着什么呢? 你怎么做呢?
在Git中挑选Cherry意味着从一个分支中选择一个提交并将其应用到另一个分支。
这与其他方式(例如
确保您在要应用提交的分支上。
1 | git checkout master |
执行以下操作:
1 | git cherry-pick <commit-hash> |
N.B:
如果你从公共分支机构挑选,你应该考虑使用
1 | git cherry-pick -x <commit-hash> |
这将生成标准化的提交消息。这样,您(和您的同事)仍然可以跟踪提交的来源,并可能避免将来发生合并冲突。
如果您在提交中附有说明,则不遵循樱桃选择。为了把它们带过来,你必须使用:
1 | git notes copy <from> <to> |
其他链接:
- git官方指南页面
这句话取自;
使用Git进行版本控制
(真的好书,如果你对git感兴趣,我鼓励你买它)
编辑:由于这个答案仍然有印象,我想添加一个非常好的动作视频教程:
Youtube:Git樱桃挑选简介
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.
1 2 | $ git checkout rel_2.3 $ git cherry-pick dev~2 # commit F, above |
之前:
后:
Git中的Cherry挑选旨在将一个分支从一个分支应用到另一个分支。如果你这样做可以做到。犯了一个错误,并将更改提交到错误的分支,但不想合并整个分支。你可以这样。恢复提交并在另一个分支上挑选它。
要使用它,您只需要
有关完整程序,请参阅:http://technosophos.com/2009/12/04/git-cherry-picking-move-small-code-patches-across-branches.html
情况的简短例子,当你需要樱桃挑选
Consider following scenario. You have two branches.
a) release1 - This branch is going to your customer, but there are
still some bugs to be fixed.b) master - Classic master branch, where you can for example add
functionality for release2.
现在:你在release1中修复了一些东西。当然你也需要在master中修复此问题。这是樱桃采摘的典型用例。因此,在这种情况下,挑选意味着您从release1分支进行提交并将其包含在主分支中。
cherry-pick是一个Git功能。如果有人想在一个分支中将特定提交提交到目标分支,则使用cherry-pick。
git cherry-pick
步骤如下。
1 | git cherry-pick <commit id> |
这里commit id是另一个branch.Eg的活动id。
1 | git cherry-pick 9772dd546a3609b06f84b680340fb84c5463264f |
访问https://git-scm.com/docs/git-cherry-pick
你可以想一下,如果一个樱桃选择与一个rebase类似,或者它的管理就像一个rebase。通过这个,我的意思是它需要一个现有的提交并重新生成它,作为起点,你当前所在分支的负责人。
Cherry pick更多地是关于如何选择提交。使用
所以你这样做的方式不同,但在幕后他们是非常相似的操作 - 提交的再生。
它有点像Copy(从某个地方)和Paste(到某个地方),但是对于特定的提交。
例如,如果要进行热修复,则可以使用
在开发分支中执行
当您与项目开发人员合作时,管理多个git分支之间的更改可能会成为一项复杂的任务。 有时您不希望将整个分支合并到另一个分支,只需要选择一个或两个特定的提交。 这个过程叫做'樱桃采摘'。
发现了一篇关于樱桃采摘的精彩文章,请查看详细信息:https://www.previousnext.com.au/blog/intro-cherry-picking-git
如果要在没有提交ID的情况下进行合并,可以使用此命令
1 | git cherry-pick master~2 master~0 |
上面的命令将把master的最后三次提交合并为1到3
如果您想为单次提交执行此操作,请删除最后一个选项
1 | git cherry-pick master~2 |
这样,您将从master的末尾合并第3次提交。