git cherry pick<commit>做什么?


当前回答

Git中的樱桃采摘意味着从一个分支中选择一个提交并将其应用到另一个分支。

这与其他方法(如合并和重基)形成对比,后者通常将许多提交应用到另一个分支。

也可以选择多次提交,但合并是首选的选择方式。

确保您位于要应用提交的分支上。git开关主机执行以下操作:gitcherry-pick<提交哈希>

不适用:

如果你从公共部门挑选,你应该考虑使用gitcherry-pick-x<提交哈希>这将生成标准化的提交消息。这样,您(和您的同事)仍然可以跟踪提交的来源,并可能避免将来的合并冲突。如果您在提交时附加了注释,则它们不会遵循樱桃树。为了让他们也过来,你必须使用:gitnotes复制<from><to>

其他链接:

git官方指南页面git樱桃采摘指南

其他回答

Git中的Cherry picking旨在将一些提交从一个分支应用到另一个分支。如果您犯了一个错误,并将更改提交到错误的分支,但不想合并整个分支,则可以这样做。你可以恢复提交,然后在另一个分支上重新选择。

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

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

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

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

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

官方文件摘录:

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

阅读更多。。。

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

这意味着:

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

示例:考虑提交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,因此会导致错误,因此请谨慎使用。

当您与一个项目开发团队合作时,管理多个git分支之间的更改可能会成为一项复杂的任务。有时您不想将整个分支合并到另一个分支中,只需要选择一个或两个特定的提交。这个过程叫做“樱桃采摘”。

找到了一篇很棒的关于樱桃采摘的文章,请查看详细信息:https://www.previousnext.com.au/blog/intro-cherry-picking-git