Git cherry pick 命令用法
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 log 和 git 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 merge 和 git rebase 中有更深入的介绍。
Cherry Picking 是一个方便且强大的命令,在某些情况下是非常有用的。 但是我们也不应滥用 cherry pick 来代替 git merge 或 git rebase。 需要 git log 命令来帮助 cherry pick 查找提交。
相关文章
如何在 Windows 系统中卸载 git
发布时间:2023/04/09 浏览次数:223 分类:Git
-
在这篇简短的文章中,我们将学习如何卸载 Git,以及如何在从个人计算机的目录中卸载 Git 后删除这些文件。
Git 如何重命名本地分支
发布时间:2023/04/09 浏览次数:64 分类:Git
-
大多数情况下,重命名分支机构是由于上述情况。 因此,在本教程中,我们将学习使用下面提到的技术更改本地 Git 分支的名称。
重命名 Git 存储库中的文件和目录
发布时间:2023/04/09 浏览次数:102 分类:Git
-
在本文中,我们将讨论 git 中的重命名过程。 我们使用 Git Rename 来更改工作目录中文件和文件夹的名称。
在 Git 中取消初始化存储库
发布时间:2023/04/09 浏览次数:187 分类:Git
-
本本文介绍如何通过 Git 命令行取消初始化 Git 存储库。git init 命令开发一个新的空置 Git 存储库。 它还用于重新初始化已经存在的 Git 存储库。
Git 仓库名称该如何命名
发布时间:2023/04/09 浏览次数:208 分类:Git
-
使用 Git 时,选择一个简洁且最新的存储库名称是一项艰巨的任务。本教程介绍了如何以独特的方式命名 Git 存储库。
配置 Git 以忽略文件模式更改
发布时间:2023/04/09 浏览次数:67 分类:Git
-
本文讨论配置 Git 以忽略文件更改 chmod 所需的步骤。 如果您更改 Git 正在跟踪的文件的权限,系统将在该文件中注册更改。
在 Git 中暂存已删除的文件
发布时间:2023/04/09 浏览次数:93 分类:Git
-
本文讨论了在 Git 中暂存已删除文件的必要步骤。我们知道 rm 命令可以删除一个文件,而无需将其从工作目录中移除。 那么,我们如何暂存已删除的文件以进行提交呢?
在 Git 中显示冲突文件
发布时间:2023/04/09 浏览次数:139 分类:Git
-
本文讨论在 Git 中列出冲突文件的最简单和最干净的方法。 我们可以使用 git status 命令,但这很麻烦,尤其是当我们有大量不冲突的文件时。