【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 操作并还原过程中所做的任何更改。

相关推荐
Winlifes1 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
郑州光合科技余经理2 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123452 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s3 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git
玄芯散人3 天前
【筑基·058】Git协作工作流:冲突解决和PR流程
git·版本控制·团队协作
寺中人4 天前
Git 版本控制完全入门指南:从安装到实战,提交 + 分支 + 协作 + 冲突解决全拆解
git·开发工具·版本控制·团队协作·代码管理
荔枝梅梅4 天前
新手程序员 SSH 第一课:从 Git 仓库连接失败理解 SSH 协议与密钥配置
git
玄芯散人4 天前
【筑基·057】Git代码时光机:版本控制入门到分支管理
git·版本控制·嵌入式开发
szephyr4 天前
Git 分支管理实战:feature/release/hotfix 怎么用才不乱
git·分支管理·团队协作·工作流·hotfix
一木 之林4 天前
手搓家庭服务器:二手装机、Docker部署、端口映射与frp内网穿透
服务器·人工智能·git·编辑器