Git 是开发人员的强大工具,使他们能够跟踪代码中的更改、与他人协作以及管理代码文件的不同版本。
Git的一个关键特性是能够挑选提交——选择性地将更改从一个分支应用到另一个分支。本教程探索使用Git cherry-pick 命令来应用选定的提交。
在本指南中,您将学习如何使用 Git cherry-pick 命令将特定提交从一个分支应用到另一个分支。
到本文结束时,您将能够浏览 Git 提交历史记录、有选择地应用更改并解决在此过程中出现的任何冲突。
第 1 步:了解 Git 提交和 Cherry-Pick
在我们深入探讨使用 Git cherry-pick 命令的实际方面之前,了解 Git 提交的概念以及 Git 中的 cherry-picking 需要什么是至关重要的。
了解 Git 提交
在 Git 中,提交是存储库在某个时间点的快照。它包括自上次提交以来您所做的所有更改。Git 中的每个提交都有一个唯一的哈希标识符,它是由哈希算法生成的一串字母数字字符。这个散列用作一个地址,允许 Git 稍后调用、比较或操作提交。
通过创建提交,您可以有效地保存不同版本的代码文件。可以查看、比较甚至还原这些版本,从而为您的项目开发提供极大的灵活性和控制。
了解 Git Cherry-Pick
Git cherry-pick 是一个功能强大的命令,它使您能够从一个分支“挑选”一个提交并将其应用到另一个分支。这在几种情况下非常有用:
- 您错误地在错误的分支上进行了提交,并希望将该提交应用于正确的分支。
- 您正在处理一个功能分支并修复了一个错误,该错误修复也需要在主分支上进行。
- 您希望避免合并整个分支,但您希望在当前分支中包含该分支上的特定提交。
值得注意的是,cherry-pick 操作不会从源分支中删除提交。相反,它在目标分支上创建一个新的提交,其中包括来自精心挑选的提交的更改。这样,两个分支的历史都保持不变。
在以下步骤中,您将学习如何使用 Git cherry-pick 命令。
了解 Git 提交和 cherry-pick 的基本概念是利用 Git 中版本控制功能的第一步。
第 2 步:在单个提交上使用 Git Cherry-Pick
现在我们对 Git 提交和 cherry-pick 有了基本的了解,让我们使用 cherry-pick 命令。在此步骤中,您将把单个提交从一个分支应用到另一个分支。
切换到目标分支
在您挑选提交之前,请确保您位于要应用提交的分支上。使用git checkout命令切换到该分支:
git checkout
替换为目标分支的名称。
识别提交哈希
接下来,您需要确定要挑选的提交。您可以使用命令查看您的提交历史记录git log。此命令将向您显示所有提交的列表,每个提交都有其唯一的哈希值、作者和提交消息。
git log
您将看到类似于以下内容的输出:
commit d4e7618b062bfbeb8f79f430afe5a69a2c2b3396 (HEAD -> main) Author: Your Name Date: Wed Feb 9 14:00:19 2023 -0500 Fixed the bug in the login feature commit c3e5749b64e4d3f93f3d5c6e6c5056757e8a74b1 Author: Your Name Date: Tue Feb 8 11:25:03 2023 -0500 Added new feature
从git log输出中,确定要挑选的提交的哈希。散列是单词“commit”之后的字母数字字符串。在这种情况下,如果我们想挑选我们修复错误的提交,我们将复制哈希`d4e7618b062bfbeb8f79f430afe5a69a2c2b3396`。
使用 Git Cherry-Pick 应用提交
git cherry-pick现在您有了提交哈希,您可以使用命令后跟提交哈希将此提交应用到当前分支:
git cherry-pick d4e7618b062bfbeb8f79f430afe5a69a2c2b3396
替换d4e7618b062bfbeb8f79f430afe5a69a2c2b3396为您提交的哈希值。
运行此命令后,Git 会将指定提交的更改应用到当前分支,并为这些更改创建新的提交。
您现在已经成功地挑选了一个提交!在以下步骤中,您将学习如何挑选多个提交并在挑选过程中解决冲突。
第 3 步:在多个提交上使用 Git Cherry-Pick
在上一步中,我们学习了如何使用git cherry-pick将单个提交从一个分支应用到另一个分支。但是如果你想应用多个提交怎么办?在这一步中,我们将探讨如何挑选多个提交。
切换到目标分支
与挑选单个提交一样,确保您位于要应用提交的分支上。使用git checkout命令切换到该分支:
git checkout
替换为目标分支的名称。
识别提交哈希
接下来,您需要确定要挑选的提交。使用该git log命令查看您的提交历史记录和相应的提交哈希值。
git log
此命令将向您显示类似于以下内容的输出:
commit d4e7618b062bfbeb8f79f430afe5a69a2c2b3396 (HEAD -> main) Author: Your Name Date: Wed Feb 9 14:00:19 2023 -0500 Fixed the bug in the login feature commit c3e5749b64e4d3f93f3d5c6e6c5056757e8a74b1 Author: Your Name Date: Tue Feb 8 11:25:03 2023 -0500 Added new feature
从git log输出中,确定要挑选的提交的哈希值。散列是出现在单词“commit”之后的字母数字字符串。
使用 Git Cherry-Pick 应用提交
现在您有了提交哈希,您可以使用命令git cherry-pick后跟提交哈希将这些提交应用到当前分支:
git cherry-pick d4e7618b062bfbeb8f79f430afe5a69a2c2b3396 c3e5749b64e4d3f93f3d5c6e6c5056757e8a74b1
将d4e7618b062bfbeb8f79f430afe5a69a2c2b3396and替换c3e5749b64e4d3f93f3d5c6e6c5056757e8a74b1为您提交的哈希值。
注意:Git 按照您提供的顺序应用提交。所以,在上面的命令中,Git 会先申请 commit d4e7618b062bfbeb8f79f430afe5a69a2c2b3396,然后再申请 commit c3e5749b64e4d3f93f3d5c6e6c5056757e8a74b1。
运行此命令后,Git 会将指定提交的更改应用到当前分支,并为这些更改创建新的提交。
恭喜!您现在已经成功地挑选了多个提交!在下一步中,您将学习如何解决挑选过程中的冲突。
第 4 步:解决cherry-pick 过程中的冲突
在从一个分支到另一个分支的 cherry-picking 提交过程中,可能会出现冲突。当您尝试git cherry-pick 的提交更改与当前分支中已有的更改相矛盾时,通常会发生这些冲突。Git 无法决定接受哪个更改,因此会出现冲突。
在此步骤中,您将学习如何解决挑选过程中的冲突。
假设您正在挑选一个提交,并且发生了冲突。Git 将暂停 cherry-picking 过程并给你一个类似这样的错误信息:
error: could not apply fa39187... some commit message hint: after resolving the conflicts, mark the corrected paths hint: with 'git add ' or 'git rm ' hint: and commit the result with 'git commit.'
识别和查看冲突
要识别导致冲突的文件,请使用以下git status命令:
git status
Git 会显示导致冲突的文件列表。它们通常被标记为“未合并”。
然后您可以使用您喜欢的文本编辑器打开这些文件。在文件中,您会发现以下列方式标记的冲突更改:
<<<<<<< HEAD changes made on the current branch ======= changes made in the commit you're cherry-picking >>>>>>> name of the commit you're cherry-picking
解决冲突
解决冲突涉及决定保留哪些更改。您可以保留当前分支中的更改、您正在挑选的提交中的更改,或两者的组合。
编辑文件以手动合并更改。做出决定后,删除冲突标记 (` <<<<<<<`, `=======`, `>>>>>>>`) 并保存文件。
继续cherry-pick
解决文件中的冲突后,您需要使用 Git 将其标记为已解决。使用 `git add` 命令后跟文件名:
git add filename
解决所有冲突并将文件标记为已解决后,您可以使用以下内容继续挑选流程:
git cherry-pick --continue
Git 然后将创建一个新的提交,其中包含来自精心挑选的提交的更改。如果不再有冲突,则 cherry-pick 操作将完成。如果与下一次提交有更多冲突(当 cherry-picking 多次提交时),该过程将再次暂停,让您解决这些冲突。
中止cherry-pick
如果您决定不继续使用 cherry-pick,您可以使用以下方法中止操作:
git cherry-pick --abort
该命令将停止 cherry-picking 过程并使您的分支恢复到开始 cherry-pick 之前的状态。
请记住,Git 中的冲突解决涉及很好地理解所做的更改以及它们应该如何合并在一起。在解决冲突后始终检查代码并测试应用程序,以确保一切按预期工作。
结论
在本文中,您学习了如何使用 Git cherry-pick 命令将特定提交从一个分支应用到另一个分支。现在,您可以有选择地将更改拉入当前工作分支,从而增强您的 Git 工作流程。
重要的是要记住,虽然 cherry-pick 是一个强大的工具,但还有更好的方法可以将更改从一个分支集成到另一个分支。Merge 和 rebase 提供了替代方法,可以保持项目开发的更清晰的历史记录。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.