如何使用 git cherry-pick 验证提交是否已应用

GitGitBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Git 是一个强大的版本控制系统,它允许开发者有效地管理他们的代码库。Git 的一个关键特性是能够使用 cherry-pick 命令将一个分支中的提交选择性地应用到另一个分支。本教程将指导你完成使用 Git cherry-pick 验证提交是否已成功应用的过程,以及解决该过程中可能出现的任何冲突的策略。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/log("Show Commits") git/BranchManagementGroup -.-> git/cherry_pick("Cherry Pick") git/BranchManagementGroup -.-> git/rebase("Reapply Commits") subgraph Lab Skills git/status -.-> lab-417334{{"如何使用 git cherry-pick 验证提交是否已应用"}} git/commit -.-> lab-417334{{"如何使用 git cherry-pick 验证提交是否已应用"}} git/log -.-> lab-417334{{"如何使用 git cherry-pick 验证提交是否已应用"}} git/cherry_pick -.-> lab-417334{{"如何使用 git cherry-pick 验证提交是否已应用"}} git/rebase -.-> lab-417334{{"如何使用 git cherry-pick 验证提交是否已应用"}} end

理解 Git Cherry-pick

Git cherry-pick 是一项强大的功能,它允许你有选择地将一个分支中的提交应用到另一个分支。当你想要将一个分支中的特定更改合并到另一个分支,而不合并整个分支时,这一功能特别有用。

什么是 Git Cherry-pick?

Git cherry-pick 是一个命令,它采用单个提交引入的更改并将其应用到另一个分支。当你想要:

  1. 向后移植修复:如果你在一个分支中有一个错误修复,想要应用到另一个分支,你可以使用 cherry-pick 来实现。
  2. 重新应用提交:如果你不小心对一个分支进行了变基(rebase)或重置(reset)操作,并且想要重新应用特定的提交,你可以使用 cherry-pick 来做到这一点。
  3. 维护线性提交历史:通过挑选提交,你可以维护一个线性的提交历史,这可能更容易理解和管理。

何时使用 Git Cherry-pick

Git cherry-pick 通常用于以下场景:

  1. 向后移植修复:当你在一个分支中有一个错误修复,想要应用到另一个分支,例如发布分支或稳定分支时。
  2. 维护线性提交历史:如果你有一个功能分支与主分支有很大的差异,你可以挑选特定的提交来维护线性提交历史。
  3. 重新应用提交:如果你不小心对一个分支进行了变基或重置操作,并且想要重新应用特定的提交,你可以使用 cherry-pick 来做到这一点。

Git Cherry-pick 的工作原理

当你使用 git cherry-pick 命令时,Git 会在当前分支上创建一个新的提交,该提交具有与指定提交相同的更改。这个新提交有一个不同的提交哈希,但更改与原始提交相同。

graph LR A[提交 A] --> B[提交 B] B --> C[提交 C] C --> D[提交 D] D --> E[提交 E] E --> F[提交 F] F --> G[提交 G] G --> H[提交 H] H --> I[提交 I] I --> J[提交 J] J --> K[提交 K] K --> L[提交 L] L --> M[提交 M] M --> N[提交 N] N --> O[提交 O] O --> P[提交 P]

在上面的图中,如果你想将 提交 E 的更改应用到另一个分支,你可以使用 git cherry-pick E 来创建一个与 提交 E 具有相同更改的新提交。

应用和验证挑选的提交

应用挑选的提交

要应用挑选的提交,你可以使用 git cherry-pick 命令,后跟提交哈希或分支名称。例如:

$ git cherry-pick e8e8c23

这会将哈希为 e8e8c23 的提交中的更改应用到当前分支。

你也可以使用以下语法挑选一系列提交:

$ git cherry-pick <起始提交>..<结束提交>

这会将指定范围内的所有提交应用到当前分支。

验证挑选的提交

应用挑选的提交后,你可以使用以下命令验证提交是否已正确应用:

  1. 检查提交日志:你可以使用 git log 命令查看提交历史,并确保挑选的提交存在。
$ git log --oneline
  1. 检查提交差异:你可以使用 git diff 命令比较挑选的提交引入的更改与当前分支中的更改。
$ git diff <挑选的提交>
  1. 检查提交哈希:你可以将挑选的提交的提交哈希与当前分支中的提交哈希进行比较,以确保应用了正确的提交。
$ git rev-parse HEAD
  1. 验证提交消息:你可以检查挑选的提交的提交消息,以确保它与原始提交消息匹配。
$ git show --oneline --name-only <挑选的提交>

通过执行这些步骤,你可以确保挑选的提交已正确应用,并且更改已合并到当前分支中。

解决 Cherry-pick 冲突

理解 Cherry-pick 冲突

当你挑选一个提交时,提交中的更改有可能与当前分支中的更改发生冲突。当原始提交和当前分支中修改了相同的代码行时,就会出现这种情况。

在 cherry-pick 过程中发生冲突时,Git 会暂停该过程,并在受影响的文件中标记出冲突区域。在完成 cherry-pick 之前,你需要手动解决这些冲突。

解决冲突

要在 cherry-pick 过程中解决冲突,请遵循以下步骤:

  1. 识别冲突文件:cherry-pick 过程暂停后,你可以使用 git status 命令查看哪些文件有冲突。
$ git status
  1. 打开冲突文件:在文本编辑器中打开冲突文件,并查找冲突标记。这些标记指示了 Git 无法自动合并更改的区域。
<<<<<<< HEAD
## 你的更改
=======
## 挑选的提交中的更改
>>>>>>> e8e8c23 (提交消息)
  1. 解决冲突:手动编辑文件中冲突的部分以解决冲突。保留你想要保留的更改,并删除冲突标记。

  2. 暂存已解决的冲突:解决冲突后,使用 git add 命令暂存已解决的文件。

$ git add <冲突文件>
  1. 继续 Cherry-pick:所有冲突都已解决并暂存后,你可以使用 git cherry-pick --continue 命令继续 cherry-pick 过程。
$ git cherry-pick --continue

如果你想在任何时候中止 cherry-pick 过程,可以使用 git cherry-pick --abort 命令。

$ git cherry-pick --abort

通过遵循这些步骤,你可以成功解决 cherry-pick 操作过程中出现的任何冲突,并完成将选定提交应用到当前分支的过程。

总结

在本 Git 教程中,你已经学习了如何使用 cherry-pick 命令有选择地将一个分支中的提交应用到另一个分支。你还了解了验证提交是否已成功应用的技巧,以及如何解决该过程中可能出现的任何冲突。通过掌握这些 Git 技能,你可以确保仓库的完整性,并维护一个干净、有条理的代码库。