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

相关推荐
敲敲敲-敲代码8 小时前
git安装记录
git
我是人✓8 小时前
Git入门:从零开始掌握分布式版本控制
分布式·git
Aurora_eye9 小时前
Git 笔记
笔记·git
解道Jdon10 小时前
FigCraft把Figma用Rust从零重写了一遍
ide·windows·git·svn·eclipse·github·visual studio
橙橙笔记12 小时前
QT安卓软件的制作
android·git·qt·软件
我是人✓12 小时前
Git远程协作与标签管理全攻略
git
闰土_RUNTU13 小时前
Git实用手册(持续更新)
git
Shaoshing13 小时前
ggggggggit
git
Lucky GGBond13 小时前
解决 Git 推送报错:Could not resolve host 及 DNS 劫持排查指南
git
川石课堂软件测试14 小时前
自动化测试|持续集成Git使用详解
git·python·jmeter·mysql·ci/cd·容器·kubernetes