git cherry pick<commit>做什么?


当前回答

它将对当前分支应用特定的提交。

这意味着:

将添加此提交添加的所有文件将删除此提交删除的所有文件将合并此提交修改的所有文件。这意味着提交后的整个文件,而不仅仅是提交后的更改!

示例:考虑提交A

added newFileA
modified main:
+ import './newFileA'

提交B

added newFileB
modified main:
+ import './newFileB'

如果你在另一个分支上选择commit B,你将得到:

/newFileB
/main :
   import './newFileA'
   import './newFileB'

由于commit B包含newFileB和main,但没有newFileA,因此会导致错误,因此请谨慎使用。

其他回答

官方文件摘录:

给定一个或多个现有提交,对每个提交应用更改介绍,记录每个人的新提交。这需要您工作树是干净的(没有来自HEAD提交的修改)。当不清楚如何应用更改时,会发生以下情况:当前分支和HEAD指针停留在上次提交时成功制作。CHERRY_PICK_HEAD引用设置为指向引入的提交难以应用的更改。干净应用更改的路径在索引文件和工作树中。对于冲突的路径,索引文件最多记录三个版本,如如gitmerge的“TRUE MERGE”部分所述。工作树文件将包含冲突的描述通常的冲突标记是>>>>>>和>>>>>>>>。未进行其他修改。

阅读更多。。。

这有点像复制(从某处)和粘贴(到某处),但用于特定的提交。

例如,如果您想进行热修复,那么可以使用樱桃采摘功能。

在一个开发分支中进行樱桃采摘,并将其合并到一个发布分支中。同样,从一个释放树枝上摘樱桃给主人。沃伊拉

cherry-pick是Git的一个功能。如果有人想在一个分支中向目标分支提交特定的提交,那么使用cherry-pick。吉特樱桃镐步骤如下。

签出(切换到)目标分支。gitcherry-pick<提交id>这里提交id是另一个分支的活动id。吉特樱桃镐9772dd546a3609b06f84b680340fb84c5463264f推到目标分支

参观https://git-scm.com/docs/git-cherry-pick

当你需要樱桃采摘时,情况的简短示例

考虑以下场景。你有两个分支。a) release1-该分支机构将面向您的客户,但还有一些bug需要修复。b) master-经典主分支,例如可以在其中添加版本2的功能。

现在:你在release1中修复了一些东西。当然,您也需要在master中进行此修复。这是樱桃采摘的典型用例。因此,在这个场景中,cherry-pick意味着您从release1分支获取提交并将其包含到主分支中。

此引用摘自:Git版本控制

使用gitcherry-pick命令gitcherri-pick-commit应用命名提交在当前分支上引入的更改。它会引入一个新的、不同的提交。严格来说,使用gitcherry pick不会改变存储库中的现有历史;相反,它增加了历史。与其他Git操作一样通过应用diff的过程引入更改,您可能需要解决冲突以完全应用给定提交中的更改。gitcherry-pick命令通常用于介绍从存储库中的一个分支提交到另一个分支。A.常见的用法是从维护中转发或返回端口提交分支到开发分支。

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

之前:

之后:

此外,这里有一个非常棒的视频教程:Youtube:Gitcherry-pick简介