迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

Git cherry pick 命令用法

作者:迹忆客 最近更新:2021/12/17 浏览次数:

git cherry-pick 是一个很强大的命令,它允许我们通过引用选择任意 Git 提交并将其附加到当前工作分支的 HEAD。 Cherry Picking 是从一个分支中挑选一个提交并将其应用到另一个分支的行为。 git cherry-pick 可用于撤消更改。 例如,假设意外提交到错误的分支。 我们可以切换到正确的分支并将提交 “pick“ 到它应该属于的地方。

什么时候使用 git cherry pick

git cherry-pick 是一个非常有用的工具,但是我们会发现在实践中它并不总是最佳的。 Cherry Picking 在许多情况下可能会导致重复提交,因此首选传统的合并方式。 话虽如此,git cherry-pick 是适用于某些场景的方便的工具...

团队协作

很多时候,团队会发现个别成员使用或围绕相同的代码工作。 也许一个新的产品功能有一个后端和前端组件。 两个产品部门之间可能有一些共享代码。 也许后端开发人员创建了一个前端也需要使用的数据结构。 前端开发人员可以使用 git cherry-pick 来选择创建这个假设数据结构的提交。 这个选择将使前端开发人员能够继续在他们的项目中进行后续的开发。

Bug修补程序

当发现错误时,尽快的向最终用户提供修复是非常重要的。 对于一些示例场景,假设开发人员已开始开发新功能。 在新功能开发期间,他们确定了一个预先存在的错误。 开发人员创建了一个显式提交来修补这个错误。 这个新的补丁提交可以直接 “pick” 到主分支,以在它影响更多用户之前修复错误。

撤消更改并恢复丢失的提交

有时,功能分支可能会过时而不会合并到主分支中。 有时拉取请求可能会在没有合并的情况下关闭。 Git 永远不会丢失这些提交,并且通过诸如 git loggit reflog 之类的命令可以找到它们并对其进行恢复。

使用 git cherry pick

说了这么多,终于到了主角登场的时候了。下面我们看一下该命令是如何使用的。

为了演示如何使用 git cherry-pick,让我们假设我们有一个具有以下分支状态的存储库:

a - b - c - d   Main
         \
           e - f - g Feature

git cherry-pick 的用法很简单,可以像下面这样执行:

$ git cherry-pick commitSha

在这个例子中,commitSha 是一个提交引用。 我们可以使用 git log 找到该提交引用。 在这个例子中,假设我们想在 main 中使用提交 f。 首先,我们确保我们在 main 分支上工作。

$ git checkout main

然后我们使用以下命令执行 cherry-pick:

$ git cherry-pick f

执行后,我们的 Git 历史记录将如下所示:

a - b - c - d - f   Main
         \
           e - f - g Feature

f 提交已成功 “pick” 到 main 分支

git cherry pick 命令选项

git cherry pick 后面也可以跟一些执行选项。

-edit

-edit 选项将会提示 git 在应用cherry-pick 操作之前提交消息。

--no-commit

带有 --no-commit 选项将执行 cherry pick 不会进行新的提交,而是将目标提交的内容移动到当前分支的工作目录中。

--signoff

--signoff 选项将在cherry-pick提交消息的末尾添加一个“signoff”签名行

除了这些有用的选项之外,git cherry-pick 还接受各种合并策略选项。

此外,git cherry-pick 还接受用于合并冲突解决的选项输入,这包括选项:--abort --continue--quit等。 这些选项在 git mergegit rebase 中有更深入的介绍。

Cherry Picking 是一个方便且强大的命令,在某些情况下是非常有用的。 但是我们也不应滥用 cherry pick 来代替 git merge 或 git rebase。 需要 git log 命令来帮助 cherry pick 查找提交。

本站文章均为原创或翻译,转载请发邮件至 1244347461@qq.com 进行申请,未经许可,禁止转载。经作者同意之后,转载请以链接形式注明出处

本文地址:

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

热门文章

教程更新

热门标签

git
扫码一下
查看教程更方便