【Git】Git cherry-pick

Git cherry-pick

1.指令效果与基本用法

在 Git 的文档中,对于cherry-pick指令的描述如下:

git cherry-pick 命令用来获得在单个提交中引入的变更,然后尝试将作为一个新的提交引入到你当前分支上。 从一个分支单独一个或者两个提交而不是合并整个分支的所有变更是非常有用的。

该命令的基本语法如下:

复制代码
git cherry-pick <commit-hash>

其中,<commit-hash>是要应用的提交的哈希值,其可以有两种取值:

  1. 提交对象的哈希值:此时会将该提交对象中的变更,作为一个新的提交引入当前分支
  2. 分支名 :此时会将该分支上的最新提交,作为一个新的提交引入当前分支

当然,也可以同时应用多个提交,只需要提供多个值:

复制代码
git cherry-pick <commit-hash1> <commit-hash2> <commit-hash3> ...

这将按照指定的顺序将所有指定的提交应用于当前分支。

2.cherry-pick的使用场景

cherry-pick命令常用于以下场景:

  • 合并单个提交 :当我们只想应用某个分支上的一个提交到当前分支时,可以使用cherry-pick命令,并给出对应的commit hash值,而不需要合并整个分支。
  • 修复bug :当我们在一个分支上修复了一个bug,并希望将这个修复应用到其他分支上时,可以使用cherry-pick命令,指定bug分支名即可(当然修复需要在一个提交中,因为指定分支名时,仅能将最新提交提取出来)。
  • 提取特定功能:当我们在一个分支上开发了一个新功能,并希望将该功能应用到其他分支上时,可以使用cherry-pick命令,同样指定分支名即可(当然新功能需要在一个提交中,因为指定分支名时,仅能将最新提交提取出来)。

3.cherry-pick的注意事项

在使用cherry-pick命令时,有一些注意事项需要了解:

  • cherry-pick会创建一个新的提交,因此可能会引入冲突。如果发生冲突,需要手动解决冲突后再继续应用提交。
  • cherry-pick不会自动合并提交的作者和提交日期,而是使用当前分支的作者和日期。如果需要保留原有的作者和日期信息,可以使用--no-commit选项,并手动修改提交信息后再提交。

4.解决冲突

cherry-pick提交时,通常会面临冲突,特别是如果cherry-pick的目标提交修改了与当前分支相同的文件。在这种情况下,需要在成功应用更改之前解决冲突。

cherry-pick期间发生冲突时,Git 会暂停进程并提示解决冲突。这时可以使用 git status 命令查看有冲突的文件,并在编辑器中解决冲突

解决冲突之后,保存更改,并使用git add命令将文件添加到暂存区。然后,您可以使用以下命令继续 cherry-pick 进程:

bash 复制代码
$ git cherry-pick --continue

这将应用更改并完成 cherry-pick 进程。

5.应用多个提交时跳过某个提交

可以使用git cherry-pick --skip命令跳过 cherry-pick 过程中的一个提交。此命令将跳过当前的提交并继续下一个提交。

6.撤销 cherry-pick 操作

在某些情况下,你可能需要撤销 git cherry-pick 操作。这时,你可以使用 git cherry-pick --abort 命令。该命令将中止 cherry-pick 操作并还原过程中所做的任何更改。

相关推荐
0和1的舞者2 小时前
《Git:从入门到精通(八)——企业级git开发相关内容》
大数据·开发语言·git·搜索引擎·全文检索·软件工程·初学者
雨奔2 小时前
Git工作流
git
妮妮喔妮4 小时前
pycharm远程提交Git
ide·git·pycharm
m0_748255416 小时前
深度掌握 Git 分支体系:从基础操作到高级策略与实践案例
大数据·git·elasticsearch
晟盾科技6 小时前
git重写历史
git·1024程序员节
韭菜炒大葱21 小时前
Git入门指南:掌握版本控制的核心工作流程
git·面试
用户6600676685391 天前
Git 入门指南:掌握版本控制的核心概念与命令
git
小生不才yz1 天前
(一)仓库创建与配置 - .git 目录的结构与作用
git
三坛海会大神5551 天前
CICD(一)CI/CD概述及GitLab部署和一些Git命令
git·ci/cd·1024程序员节
荣光波比1 天前
CICD(一)—— 从零搭建 GitLab 全流程(Docker 部署 + 实战指南)
git·ci/cd