git cherry pick<commit>做什么?
当前回答
官方文件摘录:
给定一个或多个现有提交,对每个提交应用更改介绍,记录每个人的新提交。这需要您工作树是干净的(没有来自HEAD提交的修改)。当不清楚如何应用更改时,会发生以下情况:当前分支和HEAD指针停留在上次提交时成功制作。CHERRY_PICK_HEAD引用设置为指向引入的提交难以应用的更改。干净应用更改的路径在索引文件和工作树中。对于冲突的路径,索引文件最多记录三个版本,如如gitmerge的“TRUE MERGE”部分所述。工作树文件将包含冲突的描述通常的冲突标记是>>>>>>和>>>>>>>>。未进行其他修改。
阅读更多。。。
其他回答
官方文件摘录:
给定一个或多个现有提交,对每个提交应用更改介绍,记录每个人的新提交。这需要您工作树是干净的(没有来自HEAD提交的修改)。当不清楚如何应用更改时,会发生以下情况:当前分支和HEAD指针停留在上次提交时成功制作。CHERRY_PICK_HEAD引用设置为指向引入的提交难以应用的更改。干净应用更改的路径在索引文件和工作树中。对于冲突的路径,索引文件最多记录三个版本,如如gitmerge的“TRUE MERGE”部分所述。工作树文件将包含冲突的描述通常的冲突标记是>>>>>>和>>>>>>>>。未进行其他修改。
阅读更多。。。
当您与一个项目开发团队合作时,管理多个git分支之间的更改可能会成为一项复杂的任务。有时您不想将整个分支合并到另一个分支中,只需要选择一个或两个特定的提交。这个过程叫做“樱桃采摘”。
找到了一篇很棒的关于樱桃采摘的文章,请查看详细信息:https://www.previousnext.com.au/blog/intro-cherry-picking-git
我准备了一步一步的插图,樱桃树做什么,以及这些插图的动画(接近尾声)。
樱桃采摘前(我们将从分支特性中选择提交L):
启动命令git cherry pick功能~2(功能~2是之前的第二次提交特征,即提交L):
执行命令后(git cherry-pick feature~2):
相同的动画:
注:
提交L’从用户的角度来看(提交=快照)是提交L的精确副本。
从技术上讲(内部),它是一个新的、不同的提交(因为例如,L包含指向K的指针(作为其父级),而L'包含指向e的指针)。
如果要在没有提交ID的情况下进行合并,可以使用以下命令
git cherry-pick master~2 master~0
上面的命令将主服务器的最后三次提交从1合并到3
如果要对单个提交执行此操作,只需删除最后一个选项
git cherry-pick master~2
这样,您将合并从master结尾的第三个提交。
此引用摘自: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简介
推荐文章
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式
- git pull -rebase和git pull -ff-only之间的区别